12 señales de que eres un mal programador

Es probable que no coincidan con todas o se pongan como trolls efervescentes a defender alguno de los items tocados, pero si lo piensan con un poco de apertura mental se van a dar cuenta de la cantidad de errores que cometemos como programadores :D

1. Java es todo lo que necesitas.
No ves la necesidad de usar ningún otro lenguaje, ¿por qué no se puede hacer todo con Java? No te importa ver código en Python o Ruby que logra en 10 lineas lo que llevaría varias hojas de código Java. Además, seguramente las nuevas características de la próxima versión del lenguaje lo arreglaran de todas formas. (Esto es aplicable a casi cualquier lenguaje, pero ocurre que entre la comunidad Java parece estar más extendida esta forma de pensar)

2. El término "enterprisey" (NT: se trata de un término sarcástico utilizado para designar productos complejos más allá de lo necesario) no te suena a broma.
"Enterprise" no es sólo una palabra, es una filosofía, una forma de vida, un camino a la iluminación. Cualquier cosa que pueda ser escrita, desplegada o actualizada con un trabajo mínimo es descartada como un juguete que no "escalará" para futuros usos. Mientras tanto la mayor parte del trabajo real en tu oficina se hace enviando hojas de cálculo en Excel mientras esperan a que termines de construir tu nueva visión corporativa.

3.Te opones férreamente a las funciones/métodos de más de 20 líneas de código.
(o 30 o 10 o cualquier otro número) Lo siento, algunas veces una función larga es justamente lo que necesitas. Normalmente las funciones cortas son más sencillas de entender, pero algunas veces se pueden expresar más fácilmente en una sola función más larga. El código no debería hacerse más complejo sólo para adecuarse a criterios arbitrarios.

4. "¡OH DIOS MÍO! ¡PATRONES!"
Los desarrolladores que buscan constantemente la forma de aplicar patrones a cualquier problema de código con el que se encuentran están añadiendo una complejidad innecesaria. Lejos de ser algo que busques, deberías sentirte mal cada vez que tienes que utilizar un patrón de diseño, significa que estás escribiendo código que hace las cosas más complicadas y que puede ser de dudosa utilidad. Pero, ¡ey!, tu código tiene patrones, bien por ti.

5. Los ciclos de CPU son un recurso precioso y tu estilo de programación y lenguaje reflejan esas creencias.
Hay montones de problemas en los que tienes que tener muy en cuenta el consumo de CPU (modelado/simulación, procesado de señales, kernels de sistemas operativos, etc), pero no es tu caso. Para la mayor parte de los desarrolladores de software sus principales problemas de rendimiento están relacionados con las bases de datos y la entrada/salida. El único efecto de optimizar tu código para mejorar el uso de CPU será disminuir en 2 milisegundos el tiempo necesario para la próxima consulta a la base de datos. Mientras tanto el desarrollo de la aplicación se hace más lento, no puedes hacer frente a los nuevos requerimientos y te encuentras con problemas serios de calidad. Pero al menos estás ahorrándote montones de ciclos de CPU… eventualmente.

6. Piensas que ninguna función/método debería tener más de un return.
Esta la he oído alguna que otra vez, y normalmente la razón que me dan es que el código es más sencillo de analizar. ¿Según quién? Yo encuentro más fácil de leer un código más simple, y normalmente el tener más de un return simplifica el código.

7. Tus usuarios son estúpidos. Realmente estúpidos.
Simplemente no puedes creer lo estúpidos que son, olvidándose constantemente de hacer las cosas más sencillas del mundo y cometiendo errores tontos al usar tu aplicación. Nunca has considerado que quizás es tu aplicación la que es estúpida porque eres incapaz de escribir software decente.

8. Te enorgulleces enormemente del gran volumen de código que escribes.
Ser productivo es bueno, desafortunadamente escribir montones de líneas de código no es lo mismo que ser productivo. Los usuarios nunca comentan "Guau, este programa puede ser difícil de usar y estar lleno de errores, pero al menos sé que hay un montón de código por debajo." En lugar de ser productivo, generar toneladas de mal código retrasa a los demás desarrolladores y en el futuro su mantenimiento constituirá una pesada carga.

9. Copiar y pegar es genial, te ayuda a escribir código desacoplado.
Defiendes tu uso del copy paste con extraños argumentos sobre desacoplar código y eliminar dependencias, mientras ignoras el aumento del tiempo de mantenimiento y los problemas de duplicación de errores. A esto se le llama "racionalizar tus acciones".

10. Piensas que la gestión de errores consiste en capturar todas las excepciones, registrarlas, y continuar como si nada.
Eso no es gestionar errores, eso es ignorar errores y es el equivalente semántico al "on error next" de VB. Sólo porque hayas registrado el error en algún sitio no significa que lo estés tratando. Tratar errores es algo duro. Si no sabes qué hacer exactamente cuando te encuentras con un cierto error, simplemente deja que la excepción se propague y que un nivel más alto del código lo trate.

11. Modelas todo tu código en UML antes de escribirlo.
El modelado entusiasta de UML se lleva a cabo normalmente por aquellos que no escriben demasiado código, sino que se consideran arquitectos de software. Las herramientas de modelado atraen más a aquellos que piensan que el código se puede escribir en una sala de conferencias manipulando pequeños gráficos. Los gráficos no son el diseño, y nunca serán el diseño, para eso está el código.

12. Tu código borra datos importantes.
Escribiste un cierto código que se supone que debe sobrescribir los archivos de la aplicación con otros nuevos, pero se vuelve loco y borra todos los datos del usuario.

Leyendo varios de estos recuerdo cuantas veces discutí con fanáticos por puntos como el 1 o el 4 :D

Vía MundoGeek que lo tradujo, del original de Damien Katz, gracias a la fuente (!).

Categoría: Programación Etiquetas:  
Otros posts que podrían llegar a gustarte...

Comentarios

  • Fabio coincido plenamente con vos.. aunque vos no te escapas de la regla. Y es verdad que todo no se resuleve con Java (en realidad se puede hacer de todo, aunque no todo de la manera mas optima). Pero me parece que estas atacando a Java, estas centralizando en Java, como si no habria gente que piense eso mismo sobre .net, por decir un ejemplo. Como vos sabes yo no estoy casado con ningun lenguaje, pero me parece que vos tenes algo en contra de java, todos los días me decias lo mismo..."Life is too short for Java". Te mando un abrazo

    • Responder
    • Citar
    • Comentado:
  • DJ BudA    

    No me considero brillante, pero despues de leer esto, por lo menos se que no soy un mal programador :D:D:D

    • Responder
    • Citar
    • Comentado:
  • Arkhos    


    Super_Lobito dijo:

    Fabio coincido plenamente con vos.. aunque vos no te escapas de la regla. Y es verdad que todo no se resuleve con Java (en realidad se puede hacer de todo, aunque no todo de la manera mas optima). Pero me parece que estas atacando a Java, estas centralizando en Java, como si no habria gente que piense eso mismo sobre .net, por decir un ejemplo. Como vos sabes yo no estoy casado con ningun lenguaje, pero me parece que vos tenes algo en contra de java, todos los días me decias lo mismo...Life is too short for Java. Te mando un abrazo


    Creo que lo que pasa es que la gente adula Java y es tan común escucharlo que se vuelve latiguillo. yo que se, Java es otro lenguaje mas, anda mas que eso. Hay que se run poco abiertos y pensar que hay cosas que Java no puede solucionar y que PHP (o el lenguaje que sea) si... y viceversa...

    En cuanto al punto 4... Patrones... la verdad me tienen las pelotas por el piso con los patrones... La vida no se soluciona con patrones!!!!!

    • Responder
    • Citar
    • Comentado:
  • Ale    

    Me parece que es un poco extremista, porque de la manera que lo dice (aunque entiendo que no es exactamente así), dá la idea que programar ej Java está mal, que hacer aplicaciones escalables está mal, que usar patrones está mal, etc. Algún principiante podría llegar a interpretarlo mal.

    Pd1: El que dijo que hay cosas que Java no puede solucionar y PHP sí, por favor me gustaría ver un ejemplo.
    Pd2: El 12 podría aplicarse a los programadores de Leopard: http://www.tomsguide.com/us/2007/11/22/more_leopard_problems_plague_apple/

    • Responder
    • Citar
    • Comentado:
  • anita    


    4. "¡OH DIOS MÍO! ¡PATRONES!"
    Los desarrolladores que buscan constantemente la forma de <strong>aplicar patrones a cualquier problema de código</strong> con el que se encuentran están añadiendo una complejidad innecesaria.


    100% de acuerdo. Uno debe aplicar patrones con criterio (además de asegurarse de aplicar el adecuado)


    Lejos de ser algo que busques, deberías sentirte mal cada vez que tienes que utilizar un patrón de diseño, significa que estás escribiendo código que hace las cosas más complicadas y que puede ser de dudosa utilidad. Pero, ¡ey!, tu código tiene patrones, bien por ti.

    Esta parte <strong>es cualquiera</strong>. ¿Cómo va a decir que estoy escribiendo código que hace las cosas más complicadas, y que por eso tengo que implementar un patrón? Es alrevés, cuando aplico un patrón lo hago porque el problema se soluciona más fácil y claramente. Si lo resolviera sin un patrón estaría "escribiendo código que hace las cosas más complicadas", y probablemente haciendo chanchadas con el paradigma.

    • Responder
    • Citar
    • Comentado:
  • Rage_    

    Algún día se va acabar la mentira (?) de java :P No mentira es un gran lenguaje, pero Java no es todo, igual Ruby deja mucho que desear. Por esto el mejor lenguaje es NATURAL :D :D :D

    • Responder
    • Citar
    • Comentado:
  • Fabio    


    Super_Lobito dijo:

    Fabio coincido plenamente con vos.. aunque vos no te escapas de la regla. Y es verdad que todo no se resuleve con Java (en realidad se puede hacer de todo, aunque no todo de la manera mas optima). Pero me parece que estas atacando a Java, estas centralizando en Java, como si no habria gente que piense eso mismo sobre .net, por decir un ejemplo. Como vos sabes yo no estoy casado con ningun lenguaje, pero me parece que vos tenes algo en contra de java, todos los días me decias lo mismo...Life is too short for Java. Te mando un abrazo


    jajaj, ya uno iba a caer, lobito, el mismo autor del artículo aclara:

    <em>BTW, this can be almost any language, but right now the Java community seems most afflicted with this thinking</em>

    no tiene nada que ver con JAVA, puede ser .NET, acordate del pibe este que teníamos por acá cuando dijo "para mi todo se debería resolver con .net, el resto está mal" a lo que yo le contesté "entonces sos un mal programador" y se nos puso triste :D


    anita dijo:

    Esta parte <strong>es cualquiera</strong>. ¿Cómo va a decir que estoy escribiendo código que hace las cosas más complicadas, y que por eso tengo que implementar un patrón? Es alrevés, cuando aplico un patrón lo hago porque el problema se soluciona más fácil y claramente. Si lo resolviera sin un patrón estaría escribiendo código que hace las cosas más complicadas, y probablemente haciendo chanchadas con el paradigma.


    creo que el autor se refiere a que no todo se resuelve con patrones y si tu única forma de ver los problemas es usando patrones, estás sonado. Porque los patrones pueden servir de guías pero son sólo eso, nada más que eso, patrones, no leyes.


    Ale dijo:

    Pd1: El que dijo que hay cosas que Java no puede solucionar y PHP sí, por favor me gustaría ver un ejemplo.


    si querés hacemos un flame war, pero hagamos un mini-fueguito :D , simple, un hola mundo simple, en PHP es un echo "Hola Mundo"; :D

    en realidad lo obvio es que hay cosas que se pueden resolver más FACILMENTE con un lenguaje que con otro, supongo que se podría hacer un webserver con COBOL pero es absurdo, sin embargo podríamos hacer un sistema que se te ocurra con lo que se te ocurra, pero no será eficiente o será al pedo.

    Ni en pedo haría una aplicación de escritorio con PHP, por ejemplo.

    • Responder
    • Citar
    • Comentado:
  • myNick    

    Che, pero el punto 7 es verdad! :D

    • Responder
    • Citar
    • Comentado:
  • Ale    

    Pero Fabio, "Hello World" es algo muy trivial que no sirve para nada. Hablemos de algo que tenga una mínima funcionalidad. Pero bueno, tampoco quiero empezar un flame-war, cada uno que haga y use lo que mejor le parezca.

    • Responder
    • Citar
    • Comentado:
  • marcoss    

    +1 por el punto 4.

    myNick dijo:

    Che, pero el punto 7 es verdad! :D


    Obvio! :P

    Ale dijo:
    Pero Fabio, Hello World es algo muy trivial que no sirve para nada. Hablemos de algo que tenga una mínima funcionalidad. Pero bueno, tampoco quiero empezar un flame-war, cada uno que haga y use lo que mejor le parezca.


    Es simple, como dijeron antes, todo depende de que necesites, seguramente podes hacer un Blog Engine en Java, pero es mucho mas apropiado hacerlo en un lenguaje como PHP, Python o Ruby, así como también es posible construir un webserver en PHP o COBOL como decía Fabio, pero con que fin?.. demostrar que se puede?

    • Responder
    • Citar
    • Comentado:
  • Hugolatra    

    Bueno, según esto soy un pésimo programador. Pero en realidad no me dijo nada que no supiese, soy el maestro del copy and paste afanando codigo ajeno para mis sitos!. Y que???????
    (Pero si es cierta la regla 7, mis usuarios SON estupidos. O al menos me hace la vida mas facil tratarlos como tal)

    • Responder
    • Citar
    • Comentado:
  • Noaa    

    Soy un pésimo programador.........pero tengo un pene algorítmico re loco (?)



    • Responder
    • Citar
    • Comentado:
  • Gonzalo..    

    3,6 y 7 hacen de este articulo uno muy grande... con respecto al 1.. todo programador piensa que su lenguaje es unico, desgraciadamente conozco pocos que puedan reconocer que por arriba de un lenguaje hay una arquitectura y que el lenguaje deberia depender de lo que queres hacer...

    • Responder
    • Citar
    • Comentado:
  • Fabio:

    La Verdad estoy completamente de acuerdo con vos, un post muy sincero que refleja la realidad, o mejor dicho la triste realidad !!!

    ahora, te pregunto, ¿El de la foto no sos vos cuando es chiquito?

    • Responder
    • Citar
    • Comentado:
  • Fabio    

    chupala

    <img src="http://www.gapingvoid.com/0711socialmedia1-thumb.jpg">

    • Responder
    • Citar
    • Comentado:
  • tehue    

    en general, si pensas que todos los problemas se solucionan con 1 solo paradigma, modelado, lenguaje, etc., entonces estas diciendo que no sabes programar, lo unico que haces es ser un macaco que escribe funciones

    http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html

    • Responder
    • Citar
    • Comentado:
  • Bernardo    

    Coincido Fabio. Los programadores java promedio viven en esa burbuja mental, entonces si hay un laburo que no es de java, fruncen el ceño y por lo general piensan que el resto de los mortales son idiotas.Y eso de que el usuario es un idiota, es una vanidad bien tipica de un nerd estanco, que no sabe ver más allá de lo que su horizonte de monitor le permite ver...coincido plenamente!!!!

    • Responder
    • Citar
    • Comentado:
  • Nick    

    Peco de tres de los doce items (7, 9, y 11).
    Habría que ponerle puntos a cada uno y hacerlo tipo test "¿Qué tan mal programador eres?"

    • Responder
    • Citar
    • Comentado:
  • pErico    

    yo caigo en algunos...
    por otro lado no se si soy medio tronco o que... pero hoy por ej un profesor de la facultad, mientras me corregia un tp, me dice: "donde estan los objetos de negocio que sirven para generar este reporte?" y no entendi....
    yo con mi mas ignorante respuesta le respondi que la inteligencia del reporte esta en el .rpt.... claro un query sobre la base y a la mierda... pero el insistio que si modelas objetos TODO se tiene que resolver con objetos...
    ahi si que me siento un ignorante o un necio... en fin... soy un mal arquitecto... pero un buen programador de Pl... fuck off

    • Responder
    • Citar
    • Comentado:
  • Fabio    

    pErico y desde cuando un profesor de facultad sabe? :D por algo es profesor, si no haría millones :D

    • Responder
    • Citar
    • Comentado:
  • hourus    

    Yo creo que esas son las razones de alguien que aprendio PHP y con eso quiere hacer todo. No quiere ponerse unos dias en aprender una plataforma posta.
    Si queres hacer cosas chiquitas y rapido que no necesita mucha mantenibilidad adelante, mete codigo a lo loco con php.
    Si trabajas en algo en serio, aplicaciones posta con mucho manejo de datos, java y patrones a full.
    Conozco muchos casos que como solo saben php quieren aplicarlo en todo y terminaron programando todo lo que en java ya lo tenes. ORM para la base, todo el ajax a mano, un locura ... pero bue, algunos aprendieron algo y se aferran a eso

    • Responder
    • Citar
    • Comentado:
  • gustavo    

    En cuanto a lo de Java, para mi criterio esta pensado mas para grandes proyectos, por lo menos J2SE / J2EE, en los que trabajan muchos desarrolladores, grandes corporaciones y empresas en las que muchos programadores tocan el mismo codigo, en comparacion con PHP o utro lengueje de script que estan mas pensados para hacer paginas web. Digamos que uno tiene que saber 2 o tres lenguajes y segun el problema que se le presente elegir la teconologia adecuada a su necesidad.

    • Responder
    • Citar
    • Comentado:
  • PHP: Para Hacer Páginas.

    Sí, la sigla no miente, está pensado para eso

    • Responder
    • Citar
    • Comentado:
  • Nico    


    Que feo el ñato de la foto, no todos los que programamos somos asi, che ? O si ? O son los que usan Java que quedan asi no mas ?
    Sos mas fachero si usas C# ?

    • Responder
    • Citar
    • Comentado:
  • Nico    


    Mejor si los usuario son medios lentos e ignorantes y no tenes esos Users Avanced, que por que leyeron las Power User o Code te dicen como hacer las cosas !!!!


    • Responder
    • Citar
    • Comentado:
  • andres    

    Uff esto no lo habia leido

    1. Java es todo lo que necesitas: Siempre quise matar a un fanatico de una tecnologia en particular...

    3. Para mi una funcion debe realizar una sola acción, no importa si el codigo es extenso o no. Igualmente habria q ver si parte de lo q debe hacer la funcion no se puede delegar a otra clase o funcion....

    4. En desacuerdo. Los patrones son muy utiles para resolver ciertas cosas, no todo. Hacer aplicaciones muy grandes, muy escalables y extensibles, con logicas de negocios complejas es necesario utilizar patrones... el q dice q no es q solo conoce el Factory, Singleton y alguno q otro mas. Igualmente, el utilizar patrones pasta para sentarse en el inodoro... es q no sabe q es un patron, al igual q el q lo utiliza solo porque si....

    5. Si estas programando drivers no vas a pensar lo mismo. Igualmente siempre se intenta q los codigos corran lo mas rapido posible (lo q es verdad es q muchas veces esa velocidad no depende solo del codigo).

    6. El q dice eso hay q meterlo en una balsa rodeado de tiburones hambrientos

    7. Algunos son estupidos, otros no... y otros son retrasados....

    8. Eso es proporcional al "ego" que tiene la persona que dice eso

    9. A otro mas que lo meteria en una balsa....

    10. Es increible que haya tanta gente q no tiene idea q es una excepcion

    11. Eso lo debe hacer el analista, no el programador... y no debe modelar tooooodo sino un 80 % dependiendo de la aplicacion... es fundamental que este documentado todo para luego poder hacer los testing y refactorias....

    "Los gráficos no son el diseño, y nunca serán el diseño, para eso está el código"

    Si te referis al diseño de la aplicacion (en cuanto a software o sistemas) el codigo nunca puede ser el diseño, tampoco lo son unicamente los graficos uml...

    12. otro mas q lo meteria en la balsa junto con los demas....

    • Responder
    • Citar
    • Comentado:

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https
Para evitar bots, si se tardó mucho en leer la nota seguramente no sirva y tenga que intentar dos veces

Negrita Cursiva Imagen Enlace


comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador