Estoy leyendo Coders at Work de Peter Seibel, y muchas veces se ha mencionado que los programadores que no saben escribir generalmente son malos programadores: Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra lo han afirmado (y he solo lee la mitad del libro).
¿Cuál es tu opinión sobre esto? ¿Es la incapacidad de expresarse por escrito en un idioma natural como el inglés un obstáculo para escribir un buen código?
No sé acerca de la habilidad como programador, pero por VENDERSE como programador, inteligente = sexy en el mundo independiente. Por lo tanto, si puede escribir (y hablar) bien, será percibido como inteligente y se lo considerará más confiable como desarrollador (aunque puede ser completamente infundado).
Dan Rosenstark el
Por "no se puede escribir", ¿quiere decir que su gramática es incorrecta? Eso es probablemente un problema más grande que cosas como la mala circulación, etc.
Maxpm
1
@Maxpm: Quizás, pero también una incapacidad para transmitir su significado por escrito, a pesar de ser gramaticalmente correcto.
gablin
Respuestas:
30
Hay mucho más en la programación que 'escribir código'. Una gran parte de ser un programador exitoso implica la comunicación; Poder conectarse con los clientes, comprender sus necesidades, traducirlos al ámbito técnico, expresarlos en código y luego explicar el resultado a los clientes.
Los programadores que tienen dificultades para expresarse claramente por escrito pueden no ser capaces de comunicarse bien en general, mientras que aquellos que tienen una buena comprensión del lenguaje y la escritura generalmente pueden traducir esas habilidades al código que escriben.
Creo que no poder escribir bien y, por lo tanto, comunicarse bien, evitará que uno sea un muy buen programador.
Como Jason Fried y David Heinemeier Hansson (de 37 señales) dicen en su libro Rework:
Si está tratando de decidir entre algunas personas para ocupar un puesto, contrate al mejor escritor.
Ser un buen escritor es algo más que escribir. La escritura clara es un signo de pensamiento claro. Los grandes escritores saben cómo comunicarse.
Sí, y creo que casi todos están de acuerdo en que una de las cualidades de un buen programador es la capacidad de expresarse claramente en código, por lo que esto no me sorprendería de que la capacidad de expresarse claramente por escrito se correlacione con la capacidad de expresarse claramente. en su código (y viceversa). +1
n1ckp
2
Yo segundo esto. Necesita comunicarse, no solo con la máquina. Las personas que te rodean y los programadores que vienen después de ti necesitan claridad en la comunicación, tanto oral como escrita. Hablado porque tarde o temprano tienes que hablar con la gente y escrito porque ese es tu código Y TUS COMENTARIOS.
rápidamente_ahora
¡Tu respuesta me pareció muy interesante! Pero cuando miré hacia atrás en mi memoria para encontrar quiénes eran los mejores programadores con los que trabajé, trabajé o trabajé para mí, descubrí que muchos de ellos eran muy malos para escribir. Sin embargo, eran ridículamente buenos. Sin embargo, tendré en cuenta su excelente respuesta y la intentaré en el futuro. +1
16
Si no puede explicar algo lo suficientemente bien, probablemente no lo entienda lo suficiente.
Ser una persona inteligente significa que trabajará con otras personas inteligentes y tendrá que comunicarse con ellos de manera efectiva.
Cualquier gran idea que tenga es inútil si existe solo en su cabeza
Ser capaz de comunicar sus ideas de manera efectiva es una señal de gran comprensión. Esto se aplica a más que solo el campo de la programación.
Creo que si examinamos la pregunta, obtenemos la respuesta directamente:
¿Es la incapacidad de expresarse por escrito en un idioma natural como el inglés un obstáculo para escribir un buen código?
¿Qué significa realmente escribir un buen código?
Los programas deben estar escritos para que la gente los lea, y solo de manera incidental para que las máquinas se ejecuten.
- Abelson & Sussman, Estructura e interpretación de programas de computadora
Significa expresarse de manera clara, concisa, correcta y elegante escribiendo en un lenguaje de programación.
La única diferencia entre expresarse hábilmente en inglés o en un lenguaje de programación es que el inglés es mucho más indulgente.
No creo que sea un obstáculo importante para un mono código (estoy asumiendo un cierto nivel básico / capacidad para expresarse en su idioma nativo). Sin embargo, creo que puede convertirse rápidamente en un obstáculo importante ya que usted (el desarrollador) tiene que comenzar a articular mejor los diseños / arcos / planes para una audiencia no técnica. En mi experiencia, transmitirle algo a alguien que está aproximadamente en el mismo nivel técnico que yo es más fácil y requiere mucho menos habilidades de lenguaje (natural) que para articular algo con un cliente y / o gerente. Del mismo modo, incluso cuando se trata de una audiencia técnica, ya que el tema se vuelve menos concreto, la persona que está escribiendo al respecto (o hablando sobre el tema) tiene que ser bastante articulada.
Eso depende de lo que quieras decir con "buen código".
Si te refieres a un código que simplemente funciona, casi no hay relación entre poder comunicarse con humanos y poder comunicarse con computadoras.
Si quiere decir que el código funciona, es mantenible y expresa claramente la intención del código, existe una relación absoluta entre escribir un buen código y escribirlo en un lenguaje destinado exclusivamente a los humanos.
Aunque no necesitaría todas las habilidades diferentes necesarias para ser un buen escritor para escribir código comprensible, todavía hay algunos de los elementos que deben estar allí, ya que ambos serán leídos por humanos. De alguna manera, es aún más difícil escribir un buen código, ya que debería describir la intención con el código, sin utilizar construcciones que funcionarían mal mientras la computadora lo ejecuta.
La cuestión es que la codificación también es una habilidad de comunicación. Jack Ganssle en su boletín electrónico Embedded Muse recientemente citó a Doug Abbott:
Cuando escribes un programa, lo que realmente estás haciendo es comunicarle a otro humano lo que quieres que haga la computadora. La programación se trata de comunicación, al igual que cualquier otra forma de escritura. Entonces, sí, los estudiantes de ciencias de la computación deben estar expuestos a una buena escritura. Pero dado que hay tan poco en ciencias de la computación, tal vez solo necesiten algunas clases básicas de escritura creativa.
Los programadores que no saben escribir prosa probablemente tampoco sepan escribir código.
Uno de los mejores programadores de "estrellas de rock" con los que he trabajado fue un escritor muy pobre. Y cuando digo "muy pobre", me refiero al tipo que apareció como si estuviera extremadamente borracho o apenas alfabetizado, cuando vio sus correos electrónicos. Los errores tipográficos, la falta de puntuación, la dificultad para expresar ideas con claridad y los errores de ortografía comunes ("sus / son" y demás) abundaban, casi a veces de forma insoportable. Al leer algunos de sus correos electrónicos, me hubiera preocupado que él enviara correos electrónicos a los clientes directamente (no necesitábamos hacerlo en esa compañía), ¡porque haría que la compañía se viera mal!
Aún así, fue un programador súper estrella. Un orden de magnitud más productivo y encendido que el promedio.
No estoy seguro de qué hacer con eso. He visto esto varias veces con diferentes personas. Algunos simplemente no parecen tener una habilidad especial para sentarse y escribir cosas. Y a menudo no parece afectar sus talentos en otras áreas (incluso en talentos de trabajo de conocimiento relativamente similares, como la programación). Pensarías que estaría conectado, pero he visto varios ejemplos vivos como este donde no estaba. Aunque supongo que es muy posible que ellos son " excepciones que confirman la regla " - que probablemente nunca pensé darse cuenta de los malos escritores que no son programadores, y los escritores buenos que son .
Siempre hay excepciones a la regla. También he trabajado con algunas personas brillantes, a quienes nunca dejamos acercar a un cliente porque se hubieran convertido en carne picada. Pasé años corrigiendo los errores tipográficos y demás en su documentación. Sin embargo, les dio un problema técnico y los destellos de conocimiento y soluciones fueron increíbles. Todo esto solo muestra que las respuestas aquí son generalizaciones. Sin embargo, las generalizaciones se aplican a la mayoría de las personas.
rápidamente_ahora
3
@quickly_now: Sin embargo, me preguntaría (ya que no especificó) cómo se lee su código. Pueden ser muy inteligentes y buenos para resolver problemas, pero si su código es ilegible, no son tan buenos programadores si quieres mi opinión.
n1ckp
@ n1ck: Ahora que lo mencionas, el tipo en el que estoy pensando no era muy bueno para documentar su código. El código en sí era bueno y bien diseñado, pero no hizo comentarios sobre los bits de código intrínsecamente complejos, lo que significaba que era más difícil de mantener de lo que debería ser. No había pensado en eso. :)
Bobby Tables
Estoy de acuerdo con @ n1ckp. También estoy dispuesto a apostar que su elección de nombres para variables / métodos / clases a veces sería críptica y confusa. Tiendo a ser muy cauteloso con los programadores con una productividad extremadamente alta, porque a menudo conlleva el gasto de un poco de tiempo extra para mejorar el mantenimiento a largo plazo.
Desilusionado
2
Si no pueden escribir bien, ¿cómo pueden convencerte de que son buenos programadores?
¿Alguien que no puede expresar con precisión una organización del sistema o una idea, al escribirlo, podría escribir código, es decir, instrucciones precisas, interpretado correctamente por una computadora (muy) tonta?
Pero obtiene un ciclo de retroalimentación muy claro e inmediato de la computadora si su código no está escrito correctamente. Sospecho que podría tener un inglés escrito extremadamente pobre y casi nunca se lo contarían, y mucho menos dados los comentarios que necesita para mejorar.
Carson63000
Tienes que aprender a ser claro y correcto incluso con el compilador porque si no lo haces, nunca compilarás nada al final.
Klaim
0
Creo que es muy importante para un programador poder comunicarse bien, tanto con el lenguaje hablado como escrito. La capacidad de traducir una idea en palabras es un requisito previo para escribir código.
Ya sea que nos comuniquemos con una computadora o una persona, tenemos que poner las palabras en un orden que tenga sentido siguiendo las reglas gramaticales. Tenemos que pronunciar las palabras correctamente o deletrearlas correctamente para que el otro lado de la conversación las entienda. Las computadoras arrojarán errores de sintaxis, los compañeros de trabajo dirán "¿QUÉ?" o descartar lo que se dice como balbuceo o algo peor, una distracción irritante.
He desaconsejado encarecidamente la contratación de candidatos porque no pudieron completar un pensamiento o permanecer en un tema. Nuestro jefe contrató a una persona de todos modos, y resultó ser incapaz de entregar una tarea simple a tiempo porque estaba distraído por cualquier tecnología o juguete nuevo y brillante que llamara su atención.
Entonces, sí, es importante que los programadores puedan comunicarse bien. Si no pueden comunicarse efectivamente con un humano, no pueden hacerlo con una computadora.
Los escritores pobres hacen escritores pobres, y nada más. La mala habilidad de escritura no significa que no puedan comunicarse en absoluto, pero simplemente no pueden escribir o expresarse muy bien. Por supuesto, cualquiera puede decir que la habilidad de comunicación es importante y crucial en la empresa, etc., pero eso no significa que un programador con poca habilidad de comunicación no pueda hacer bien el trabajo. La programación y la escritura son arte, pero de un tipo completamente diferente. Escribir es sobre cómo hacer que otro ser humano entienda lo que está diciendo y / o actúe en consecuencia, pero la programación no hace que la computadora entienda sus requisitos, porque ninguna computadora comprenderá los requisitos de los usuarios (al menos dentro de 100 años a partir de ahora IMO). La programación trata sobre cómo traducir el requisito al lenguaje de programación, y es por eso que la habilidad de escritura no está tan relacionada.
Parte del trabajo de un programador es expresarse claramente en código (y comentarios) para que, no solo la computadora, sino también otros humanos puedan leer el código. Tendría sentido (pero no está demostrado AFAIK) que estas habilidades están correlacionadas.
n1ckp
0
¡Absolutamente no!
Un buen escritor no es más que un buen escritor. Pídale a un buen escritor que describa el concepto de una base de datos a una persona no técnica. ¿Qué crees que obtendrás ...?
Un buen escritor, escribe. Un buen programador escribe un buen código.
Código que otros pueden leer seis meses después de que se haya desarrollado.
Código que tiene sentido a las 2:00 a.m. de la mañana cuando el sistema ha fallado y se está realizando la depuración.
Código que a todos los demás les gusta pedir prestado porque lo entienden y pueden modificarlo fácilmente
Código que funciona 24/7 365
Iba a seguir y seguir, pero preferiría pasar mi tiempo respondiendo a otras publicaciones. Creo que ustedes saben cuál es mi postura sobre este tema.
Creo que los puntos 1,2 y 3 requieren que uno sea un buen escritor además de un buen programador. En esencia, está considerando buenas habilidades de escritura como un rasgo implícito.
Respuestas:
Hay mucho más en la programación que 'escribir código'. Una gran parte de ser un programador exitoso implica la comunicación; Poder conectarse con los clientes, comprender sus necesidades, traducirlos al ámbito técnico, expresarlos en código y luego explicar el resultado a los clientes.
Los programadores que tienen dificultades para expresarse claramente por escrito pueden no ser capaces de comunicarse bien en general, mientras que aquellos que tienen una buena comprensión del lenguaje y la escritura generalmente pueden traducir esas habilidades al código que escriben.
Creo que no poder escribir bien y, por lo tanto, comunicarse bien, evitará que uno sea un muy buen programador.
Como Jason Fried y David Heinemeier Hansson (de 37 señales) dicen en su libro Rework:
fuente
Ser capaz de comunicar sus ideas de manera efectiva es una señal de gran comprensión. Esto se aplica a más que solo el campo de la programación.
fuente
Creo que si examinamos la pregunta, obtenemos la respuesta directamente:
¿Qué significa realmente escribir un buen código?
Significa expresarse de manera clara, concisa, correcta y elegante escribiendo en un lenguaje de programación.
La única diferencia entre expresarse hábilmente en inglés o en un lenguaje de programación es que el inglés es mucho más indulgente.
fuente
No creo que sea un obstáculo importante para un mono código (estoy asumiendo un cierto nivel básico / capacidad para expresarse en su idioma nativo). Sin embargo, creo que puede convertirse rápidamente en un obstáculo importante ya que usted (el desarrollador) tiene que comenzar a articular mejor los diseños / arcos / planes para una audiencia no técnica. En mi experiencia, transmitirle algo a alguien que está aproximadamente en el mismo nivel técnico que yo es más fácil y requiere mucho menos habilidades de lenguaje (natural) que para articular algo con un cliente y / o gerente. Del mismo modo, incluso cuando se trata de una audiencia técnica, ya que el tema se vuelve menos concreto, la persona que está escribiendo al respecto (o hablando sobre el tema) tiene que ser bastante articulada.
fuente
Eso depende de lo que quieras decir con "buen código".
Si te refieres a un código que simplemente funciona, casi no hay relación entre poder comunicarse con humanos y poder comunicarse con computadoras.
Si quiere decir que el código funciona, es mantenible y expresa claramente la intención del código, existe una relación absoluta entre escribir un buen código y escribirlo en un lenguaje destinado exclusivamente a los humanos.
Aunque no necesitaría todas las habilidades diferentes necesarias para ser un buen escritor para escribir código comprensible, todavía hay algunos de los elementos que deben estar allí, ya que ambos serán leídos por humanos. De alguna manera, es aún más difícil escribir un buen código, ya que debería describir la intención con el código, sin utilizar construcciones que funcionarían mal mientras la computadora lo ejecuta.
fuente
La cuestión es que la codificación también es una habilidad de comunicación. Jack Ganssle en su boletín electrónico Embedded Muse recientemente citó a Doug Abbott:
Los programadores que no saben escribir prosa probablemente tampoco sepan escribir código.
Más sobre este interesante artículo:
¿La mala escritura refleja malas habilidades de programación?
fuente
Esto es completamente anecdótico, pero:
Uno de los mejores programadores de "estrellas de rock" con los que he trabajado fue un escritor muy pobre. Y cuando digo "muy pobre", me refiero al tipo que apareció como si estuviera extremadamente borracho o apenas alfabetizado, cuando vio sus correos electrónicos. Los errores tipográficos, la falta de puntuación, la dificultad para expresar ideas con claridad y los errores de ortografía comunes ("sus / son" y demás) abundaban, casi a veces de forma insoportable. Al leer algunos de sus correos electrónicos, me hubiera preocupado que él enviara correos electrónicos a los clientes directamente (no necesitábamos hacerlo en esa compañía), ¡porque haría que la compañía se viera mal!
Aún así, fue un programador súper estrella. Un orden de magnitud más productivo y encendido que el promedio.
No estoy seguro de qué hacer con eso. He visto esto varias veces con diferentes personas. Algunos simplemente no parecen tener una habilidad especial para sentarse y escribir cosas. Y a menudo no parece afectar sus talentos en otras áreas (incluso en talentos de trabajo de conocimiento relativamente similares, como la programación). Pensarías que estaría conectado, pero he visto varios ejemplos vivos como este donde no estaba. Aunque supongo que es muy posible que ellos son " excepciones que confirman la regla " - que probablemente nunca pensé darse cuenta de los malos escritores que no son programadores, y los escritores buenos que son .
fuente
Si no pueden escribir bien, ¿cómo pueden convencerte de que son buenos programadores?
fuente
¿Alguien que no puede expresar con precisión una organización del sistema o una idea, al escribirlo, podría escribir código, es decir, instrucciones precisas, interpretado correctamente por una computadora (muy) tonta?
fuente
Creo que es muy importante para un programador poder comunicarse bien, tanto con el lenguaje hablado como escrito. La capacidad de traducir una idea en palabras es un requisito previo para escribir código.
Ya sea que nos comuniquemos con una computadora o una persona, tenemos que poner las palabras en un orden que tenga sentido siguiendo las reglas gramaticales. Tenemos que pronunciar las palabras correctamente o deletrearlas correctamente para que el otro lado de la conversación las entienda. Las computadoras arrojarán errores de sintaxis, los compañeros de trabajo dirán "¿QUÉ?" o descartar lo que se dice como balbuceo o algo peor, una distracción irritante.
He desaconsejado encarecidamente la contratación de candidatos porque no pudieron completar un pensamiento o permanecer en un tema. Nuestro jefe contrató a una persona de todos modos, y resultó ser incapaz de entregar una tarea simple a tiempo porque estaba distraído por cualquier tecnología o juguete nuevo y brillante que llamara su atención.
Entonces, sí, es importante que los programadores puedan comunicarse bien. Si no pueden comunicarse efectivamente con un humano, no pueden hacerlo con una computadora.
fuente
Los escritores pobres hacen escritores pobres, y nada más. La mala habilidad de escritura no significa que no puedan comunicarse en absoluto, pero simplemente no pueden escribir o expresarse muy bien. Por supuesto, cualquiera puede decir que la habilidad de comunicación es importante y crucial en la empresa, etc., pero eso no significa que un programador con poca habilidad de comunicación no pueda hacer bien el trabajo. La programación y la escritura son arte, pero de un tipo completamente diferente. Escribir es sobre cómo hacer que otro ser humano entienda lo que está diciendo y / o actúe en consecuencia, pero la programación no hace que la computadora entienda sus requisitos, porque ninguna computadora comprenderá los requisitos de los usuarios (al menos dentro de 100 años a partir de ahora IMO). La programación trata sobre cómo traducir el requisito al lenguaje de programación, y es por eso que la habilidad de escritura no está tan relacionada.
fuente
¡Absolutamente no!
Un buen escritor no es más que un buen escritor. Pídale a un buen escritor que describa el concepto de una base de datos a una persona no técnica. ¿Qué crees que obtendrás ...?
Un buen escritor, escribe. Un buen programador escribe un buen código.
Iba a seguir y seguir, pero preferiría pasar mi tiempo respondiendo a otras publicaciones. Creo que ustedes saben cuál es mi postura sobre este tema.
fuente