¿Qué hace a un buen desarrollador: una gran habilidad en matemáticas, inteligencia o ambas?

La programación es matemática. Mucha gente a continuación dice que las matemáticas apenas se usan en informática. En el caso de Facebook, esto no es del todo cierto. La cuestión es que las matemáticas no son realmente números. Las matemáticas no son tan rígidas como generalmente se enseñan en la escuela secundaria y la universidad, pero de hecho pueden ser muy creativas y dinámicas. Las matemáticas, como la programación, se trata de abstracción. La diferencia entre programación y matemáticas radica en cómo se usa la abstracción.

En la programación, las cosas se abstraen para que podamos pasar de algo simple y usarlo para crear sistemas más complicados, mientras que en matemáticas las cosas se abstraen para que los sistemas más complicados puedan ser simples .

Básicamente, en programación estás construyendo mientras que en matemáticas estás desarmando.

Entonces, cada vez que intentas encontrar la forma más simple de hacer algo, estás haciendo matemáticas, y cada vez que estás usando esa cosa simple para construir otra cosa, estás programando.

Para tomar el ejemplo de Facebook, Facebook debe administrar grandes cantidades de datos, y hacer que esta administración sea óptima tiene un campo completo de matemáticas dedicado a ello. Entonces, realmente, la programación y las matemáticas son inseparables.

Debido a esto, probablemente no deberías pensar en “habilidad” en matemáticas o “habilidad” en programación, solo deberías pensar en resolver los problemas que están frente a ti. Esto se reduce a la práctica, la determinación y no tener miedo de hacer preguntas. Esta es básicamente una versión larga de la respuesta del usuario de Quora.

Para agregar a la excelente respuesta de Jeff Nelson (con la que estoy de acuerdo) también agregaré lo siguiente:

Como alguien a quien le gusta la programación pero no tiene un amor intrínseco por las matemáticas, descubrí que puedo estar muy motivado y ser bueno en matemáticas si eso significa terminar con escribir mejores programas.

Estaba obteniendo C en la geometría de coordenadas rudimentaria de la escuela secundaria porque me pareció aburrida. Esto cambió cuando tuve que elegir la geometría de coordenadas para implementar algunos programas gráficos que quería y de repente la geometría de coordenadas se volvió fácil.

El contexto puede hacer que las matemáticas sean divertidas y fáciles cuando sea necesario. Sé si los amigos que son buenos en matemáticas pero tuvieron que abandonar CS porque eran malos programando o no lo disfrutaban. Han tenido buenas carreras, pero no en ingeniería de software.

Un nivel básico de pasión y competencia son requisitos previos si desea obtener buenos resultados en un campo, y la programación no es una excepción.

bastante simple

Creo que las matemáticas tienen poco que ver con eso para la mayoría de los trabajos
la mayoría y muchos esfuerzos de programación involucran solo conceptos matemáticos de secundaria
lo que importa es ser inteligente con estos atributos de personalidad …
Máxima atención al detalle, la búsqueda incesante de la mejora continua
ser capaz de diseñar algoritmos elegantes, flexibles y concisos para resolver el problema en cuestión de manera extensible
Actualizando continuamente su conjunto de habilidades, adoptando las tecnologías más efectivas para resolver el problema en cuestión
crear un grupo de personas con ideas afines y compartir ideas con ellos
mantenerse joven, motivado y enfocado

necesitará algo de matemática dependiendo de su tarea de programación
es seguro decir que se requiere dominio algebraico básico, si eres bueno en eso ayudará de forma incremental
la mayoría de los trabajos de programación están en este nivel, sirviendo a una página web sin grandes problemas matemáticos

hay campos de aplicación que requieren matemáticas avanzadas

programación científica a menudo utilizando cálculo, vectores, momentos de fuerza, modelado de estructuras físicas, utilizado en contratistas de defensa, laboratorios nacionales, instalaciones de investigación

análisis de big data, necesidad de matemática basada en conjuntos y grupos para procesar grandes conjuntos de datos para intersecciones, superposición, métricas de correlación
se usa en Facebook, Google, Netflix, Amazon, etc. para procesar enormes conjuntos de datos de bytes múltiples para inferir elementos y preferencias de correlación basados ​​en el usuario (sí, de ahí provienen los malditos anuncios en el RHS del navegador)
hay fórmulas para tener en cuenta la correlación, similitud, proximidad del documento, base de tiempo, proximidad geográfica, etc. que debe implementar en el código

Si eres bueno en uno, tienes más posibilidades de ser bueno en el otro, pero yo diría que las matemáticas no son tan importantes para la programación como la gente piensa. Si bien la programación se basa en conceptos matemáticos, no es el tipo de matemática que la mayoría de las personas encuentran en la escuela o incluso en la universidad. Para ser un buen programador, debes ser bueno en el razonamiento lógico. Una vez que comience a trabajar en proyectos de software de un tamaño más considerable, la estructuración se vuelve más importante. Ser capaz de concentrarse es otro buen rasgo, que tal vez fue lo que hizo que Zuckerberg tuviera éxito.

Para crear Facebook (o casi cualquier otro proyecto de software), normalmente no utiliza las matemáticas por encima del nivel de adición.

La respuesta es si y si.
Zuckerberg no es un ejemplo de un buen desarrollador: tuvo éxito por suerte y perspicacia comercial.
La mayoría de los mejores desarrolladores no son súper ricos (pero probablemente bastante “cómodos”) y son inteligentes y buenos en matemáticas.

Estoy viendo muchas respuestas en las que los desarrolladores afirman que no son buenos en matemáticas, pero lo dudo mucho. Casi siempre hay cálculos algebraicos y “algoritmos numéricos” como aproximaciones de series infinitas, muchas operaciones basadas en conjuntos, cálculos hash y exponenciales (especialmente en criptografía).
¡Cree una clase que funcione con enteros de 256 bits con un lenguaje que solo admita enteros de 32 bits! Nunca contrataría a un programador que no supiera la diferencia entre una mantisa y un exponente.

Los matemáticos se han apoderado de la industria en detrimento de todos los demás. Enseñan los cursos para entrenar las mentes. Excluyen a propósito a los no matemáticos de su “pequeño mundo” y discriminan a cualquiera que no comparta su visión del mundo. Son los Sumos Sacerdotes de Lambda, los Unos, la Nada, el Ser.

Han retrasado el progreso del conocimiento y la ciencia en cincuenta años al tratar de atascar conceptos matemáticos donde no pertenecen.

Si estoy haciendo contabilidad, la lógica matemática es un obstáculo completo. Usar conceptos matemáticos para hacer finanzas y contabilidad (digamos sustituciones) me llevaría a la cárcel. Los constructos en contabilidad y finanzas son “soberanos”, dados y fijos. Cuando se realiza una transacción de dinero y se usan las matemáticas, alguien está siendo estafado.

Es por eso que el 80% de todo el software empresarial que se ejecuta hoy está basado en COBOL. Seamos honestos aquí: el cálculo lambda es una cosa hermosa. Cobol fue golpeado por el palo feo tantas veces que ni siquiera su mamá lo abrazó. Y IT Folk (The Angry Mathematicians Community) mantiene a los Cobols en Dungeon y regula estrictamente el acceso y prohíbe cualquier modificación. COBOL funciona porque su LÓGICA empresarial y contable se aplica al SOFTWARE empresarial y contable. Double Post Accounting no ha cambiado en 800 años porque cumple su propósito. Usar el Lambda para la contabilidad es un delito grave castigado con encarcelamiento. No estoy bromeando.

Prolog es bueno si pasaste largos períodos de tiempo con Popper y Russel. Lo cual hice. La herramienta se ajusta a la construcción lógica. Pero su lógica avanzada, lindando con la metafísica, hace uso de construcciones matemáticas para demostrar o aclarar construcciones lógicas. Las construcciones abstractas no son construcciones lógicas, son construcciones matemáticas.

El punto aquí es que las matemáticas simplemente no son una disciplina. Es un tema. Es una herramienta (techne, para usar su término griego) que debe adaptarse para su uso. Otras disciplinas y profesiones hacen uso de estructuras lógicas muy formales. A menos que la lógica del software siga esa lógica, el software simplemente no será útil para ese grupo de conocimiento.

La verdad es que no puedo “simplificarlo” lo suficiente como para hacer que mis facultades de razonamiento se ajusten a las limitaciones de las matemáticas. Mi sistema de reglas se basa en la jurisprudencia y la ley, no en el posicionamiento matemático relacional.

Si una universidad decide hacer de “Introducción a la programación de software 101” un festival de tortura alrededor de Python, están demostrando al mundo que son Python de Monty … Lo que dicen es “QUEREMOS PROBARSE A FALLAR A CADA ESTUDIANTE”. Están condenando a todos los estudiantes a vivir una vida de ignorancia, utilizando una herramienta que están condenados a nunca poder usar adecuadamente. El cálculo Lambda es completamente inútil para aproximadamente el 90% de todas las demás profesiones. Su notación posicional es un obstáculo completo para el pensamiento adecuado. Es una prueba de esfuerzo para excluir otras disciplinas.

Y eso es todo lo que hay que hacer. Ahora, ¿dónde está mi bastón? Siento la necesidad de golpear mi pesadilla de tubo de cátodo verde parpadeante infestada de Cobol frente a mí, para poder exportar los datos delimitados por comas, cargarlos en una hoja de cálculo y darle algún sentido …

Como dice Jeff, una mente matemática encontrará que aprender a codificar y depurar ese código es mucho más fácil que alguien que no tiene uno.

No estoy * totalmente * de acuerdo con él en que las matemáticas de nivel universitario no se usan con frecuencia. Realmente depende de tu campo. Si quieres escribir páginas web, probablemente tenga razón. Por otro lado, si desea escribir juegos en 3D, comprenderá mejor la geometría del vector de forma bastante instintiva.

“Inteligente” ni siquiera se puede definir, por lo que es imposible decir lo importante que es.

Una mente que combina la resolución creativa de problemas con el rigor matemático generalmente encontrará que la programación es la más natural y agradable.

La gran mayoría de los trabajos de ingeniería de software no utilizan en gran medida las matemáticas de nivel universitario. Hay raras excepciones como aprendizaje automático, modelado científico, estadísticas, BI o bioinfomática, que utilizan matemáticas avanzadas.

Sin embargo, las matemáticas son uno de los pocos campos que se centran casi por completo en el pensamiento analítico gradual cuidadoso. Entonces, estudiar matemáticas es un poco como practicar tu swing de tenis; no es jugar tenis, pero aún mejora tu juego de tenis.

En mi opinión, la pasión por la programación es el ingrediente más importante. Una persona inteligente a la que no le guste la programación no será un desarrollador fuerte.

Escuchemos a Jeff Atwood, un desarrollador estrella de rock es el fundador y arquitecto de Stack Overflow:

  1. Soy terrible en matemáticas. ¿Qué tan terrible, preguntas? Bueno, pensé que podría irme a la escuela de negocios en 1994, así que tomé los GRE. Esta fue la primera prueba estandarizada para la que realmente estudié . No porque sea tan inteligente, claro, sino porque soy muy, muy vago. Con el esfuerzo adicional de estudiar, hice mi mejor esfuerzo en las pruebas: obtuve un puntaje en el percentil 99.9 en la parte verbal del GRE, pero apenas obtuve el percentil 77 en matemáticas. Esto siempre me ha molestado, porque las computadoras y las matemáticas están muy vinculadas. Me encantan las computadoras, pero no soporto las matemáticas. No importa cuán duro me aplique, soy terrible en eso. Nunca podría entender mis conceptos. Pero soy muy bueno escribiendo acerca de cuánto chupo en matemáticas, por lo que vale.

Cinco cosas que no sabías sobre mí (y mi oficina)

Ambos son requisitos, aunque es muy difícil hacerlo bien en matemáticas sin ser inteligente.

Para ser un buen desarrollador, estos consejos son útiles:

Amante de conquistar rompecabezas

La capacidad de hiperenfoque

La capacidad de pensar clara y concisamente sobre un problema.

La capacidad de actuar sobre un nuevo concepto antes de comprenderlo completamente

La capacidad de cambiar las perspectivas cuando se expone a ideas disruptivas

La capacidad de absorber e integrar grandes cantidades de información rápidamente

El deseo de mejorar constantemente los códigos y patrones de pensamiento

La madurez para retroceder de su idea / código cuando alguien más tiene una mejor solución

La capacidad de no involucrarse emocionalmente con su código

La capacidad de entender el código de otras personas.

Tener el deseo de ayudar y guiar a otros

Tener el deseo de aprender de los demás.

La capacidad de googlear y luego adaptar ecuaciones complicadas

Habilidades de comunicación decentes.

Paciencia contigo mismo y con los demás.

El TOC moderado ayuda bastante.

Como han dicho otros, las personas inteligentes tienden a ser buenas matemáticas. Para ser un buen desarrollador debes ser inteligente. Lo suficientemente inteligente como para romper el problema a un nivel comprensible y luego implementar una solución sólida.

Debe evitar usar Zuckerberg o Gates como modelo de buenos desarrolladores. Su éxito no se debe a que fueran grandes desarrolladores. Realmente tampoco sé qué tan buenos son, nunca he leído su código fuente, pero sospecho que en realidad solo son promedio para buenos desarrolladores y hay muchos mejores por ahí. Su éxito en realidad proviene de comprender los negocios, ver un mercado no explotado y tener la suerte de ser el primero en explotarlo agresivamente. Y aunque sus habilidades eran un requisito previo, sospecharía que tener suerte fue el factor más importante.

Conozco a muchos programadores / programadores / desarrolladores muy buenos que son excelentes en lo que hacen y excelentes en pensamiento algorítmico y matemática computacional, pero conocen muy pocas otras matemáticas más allá del álgebra, la lógica, la geometría o incluso las estadísticas más rudimentarias. Solo piense en el ruido GRANDE sobre los datos GRANDES, todavía no nos hemos dado cuenta del hecho de que el número de resultados positivos sigue siendo pequeño. Los informáticos saben más de matemáticas, pero esto varía y depende mucho del interés y la capacitación. Y aun así, la mayoría no está acostumbrada a pensar en términos multidimensionales, no lineales y de mayor dimensión, y la mayoría no desarrolla nuevos enfoques para nuevos problemas: la mayoría está llevando a cabo aplicaciones de memoria de cosas que aprendieron en la escuela de posgrado.
Por lo tanto, ser bueno en el pensamiento lógico y cierta cantidad de matemática ayuda, ser inteligente no hace daño, la atención al detalle probablemente sea muy importante y tener al menos un poco de ADD probablemente ayude mucho.

El desarrollo de software en estos días se parece más a la plomería que a cualquier otra cosa. Ya no escribimos bucles que realmente hacen algo, simplemente llamamos a las API y conectamos los datos de una API a otra.

De vez en cuando tienes que calcular millas por galeón para saber cómo dividir y cómo no dividir por cero, e incluso saber un poco sobre los peligros de la aritmética de punto flotante.

Algunos trabajos requieren matemáticas considerables, como la visualización en 3D, pero la mayoría de los trabajos son mucho menos intensivos en matemáticas.

Me desconcierta por qué la gente piensa que las matemáticas son el área principal de requisitos para algo que se reduce a dividir un trabajo en pasos pequeños y simples y usar un lenguaje para describir esos pasos de tal manera que alguien con dificultades de aprendizaje y extremadamente literal manera de interpretar absolutamente todo lo que fácilmente podría entender. Las dos áreas en las que necesita excelencia realmente son lógica y lenguaje, en mi humilde opinión.

No me han gustado las matemáticas desde mis primeros años, sin embargo, he sido un programador muy exitoso y ahora consultor independiente durante 43 años. En la universidad se agregó un “nuevo” requisito para un segundo año de cálculo. Cuando comenzó la clase, todos éramos licenciados en ciencias de la computación forzados a la clase. Así que el profesor, siendo un gran tipo, nos hizo hacer cálculos integrales al programar los problemas. La única clase de matemáticas que obtuve una A. No podía hacer matemáticas, pero puedo programar como loco. Cuarenta y tres años después, nunca he usado las matemáticas directamente. He programado sistemas operativos, compiladores, sistemas de administración de bases de datos, procesamiento de reclamos de Medicare, sistemas POS y mucho más, en muchos idiomas diferentes.

Mark obtuvo un puntaje perfecto en el SAT. Se destacó en matemáticas de manera más alta que la persona promedio. La gente siempre pregunta acerca de ser bueno en matemáticas, sin embargo, es más importante ser lógico. Ser “bueno” en matemáticas requiere que vuelvas a resolver los problemas y estudies cómo funcionan. No es difícil, solo lleva mucho tiempo. Ser lógico debería importar más.

No matemáticas, sino lógica. Comencé a programar en ensamblador (Z80, así que fue hace un tiempo) pero no tengo nada que hacer en matemáticas de secundaria. Más tarde, al escribir algunas aplicaciones de laboratorio de nivel bastante alto en lenguajes de nivel superior que requerían un análisis bastante detallado, me dieron las fórmulas y simplemente codifiqué lo que vi, todo esto se probó contra valores conocidos con resultados conocidos. No pude darle ninguna explicación detallada sobre las matemáticas involucradas, pero sabía la lógica que solía llegar allí.

Creo que Mark Zuckerberg y Steve Jobs fueron más casos de personas con las cualidades adecuadas en el momento adecuado. Si hubieran estado poco lejos, serían meros destellos en el fondo cósmico. Dicho esto, me gustaría que le dijera que el Programador Myth of Genius está muy sobrevalorado y es un MITO.
Un programador todavía necesita probar su código, seguir prácticas comprobadas, etc.

Las matemáticas se usan en muy pocos trabajos de desarrollador. Muchos desarrolladores tienen dificultades para sumar una hoja de tiempo semanal. Creo que un abrazo saludable de lo abstracto y una racha creativa son la marca de los desarrolladores con el factor “it”.