¿Cuáles son algunos de los errores que cometen los programadores principiantes y que luego lamentan, o que dificultan su desarrollo en ese campo?

1. Cuando era adolescente, en algún momento me obsesioné con escribir el código más conciso posible (piense en hacer cosas inteligentes como multiplicar por un poco de matemática en una variable booleana para aumentar o disminuir un puntero). Me tomó varias veces necesitar pasar dos horas tratando de entender el código que había escrito el día anterior para superar esta forma de presumir. Así que ese es mi punto aquí: escribir código inescrutable puede parecer alardear, pero en realidad es un signo de inmadurez. Alguien * más * tendrá que trabajar en esa cosa súper inteligente, tarde o temprano, y no apreciarán la inteligencia.

2. Uno que veo mucho es “pensar que los objetos son reales” (aquí también podría sustituir cualquier otro lenguaje de programación popular por “objetos”). En pocas palabras: una computadora ejecuta instrucciones, secuencialmente, y habla con el hardware que está proporcionando algunos bytes o recibiendo algunos bytes. Todavía es todo lenguaje de máquina, y todavía son todos bytes. Por lo tanto, no deslumbrarse con la espuma y la efervescencia que la gente inventa para adherirse a esos bytes y hardware es importante: puede hacerlo productivo, pero limitará su pensamiento.

Como una receta para la dolencia específica de “los objetos de pensamiento son reales”, mi ejercicio favorito para ayudar a los desarrolladores de Java a escapar de esa rutina es simple: escribir un servicio que utilice proxies dinámicos de Java y tome un HashMap. Debería poder recibir cualquier interfaz que contenga solo getters y setters de estilo JavaBeans, y generar una implementación de esa interfaz que lea / escriba usando HashMap. Lo que acaba de hacer es colocar su propio modelo de memoria debajo de los objetos, lo que la JVM está haciendo por usted. Y terminas dándote cuenta de que lo que acabas de hacer es todo lo que JVM está haciendo también: los objetos son una ficción útil que aprovecha los millones de años de evolución que tiene el cerebro humano para interactuar con cosas que persisten, tienen propiedades y pueden hacer cosas . No hay nada de malo en eso, pero son una herramienta para que los programadores piensen en los programas más fácilmente, eso es todo.

3. Sin pensar en lo que está haciendo todo el sistema, solo en el rincón más familiar. Tuve la suerte de que me destetaron en lenguaje ensamblador Z-80; no estoy seguro de cómo llegas allí en estos días. Recientemente realicé algunas consultas de rendimiento para una compañía cuya aplicación web haría más de 2000 consultas SQL para responder una solicitud HTTP. Obtiene sistemas como ese cuando nadie piensa en el comportamiento de todo el sistema.

4. Veo grandes diferencias en los programadores más jóvenes dependiendo de si se desarrollan bajo Windows o un sistema operativo con sabor a Unix. Hay una impotencia aprendida que proviene de ser un usuario de Windows: encantamientos mágicos como reiniciar para arreglar cosas, que es una consecuencia de estar acostumbrado a un mundo donde el sistema operativo es una caja negra poco confiable que está fuera de su control (incluso si quisieras obtener el código fuente y ver qué está haciendo realmente, no puedes). Probar cosas al azar hasta que funcione es puro veneno para la buena ingeniería. Desarrollar las habilidades de uno en un entorno donde ese es con frecuencia el único recurso parece (para mí) afectar negativamente las habilidades de resolución de problemas de las personas: es como tratar de desarrollar sus habilidades para mantener un automóvil usando un automóvil que viene con el capó permanentemente soldado. La conclusión es que una computadora es una máquina, no muy diferente a un automóvil, y lo que está haciendo en un momento dado es en gran medida algo que se puede conocer. Y hay grandes beneficios cuando, al programar, te preguntas “¿Qué estoy pidiendo físicamente que haga una máquina?” y poder responder eso a una aproximación razonable. Cualquier cosa que sea una caja negra incognoscible entre usted y el hardware es un gran impedimento para desarrollar esa habilidad.

He tenido la oportunidad de trabajar con personas que comienzan a creer que son estrellas de rock porque siempre pueden crear software de un tipo muy específico. Por ejemplo, un desarrollador que conozco puede crear una aplicación .Net que utiliza varios marcos populares para conectarse a un servicio REST o una base de datos y mostrar datos. Funciona muy bien, y él puede hacerlo todo el día. Él es una “estrella de rock” por su propia admisión. Dale algo fuera de su zona de confort, y las cosas cambian. “Eso es para nerds, no me gusta eso”. (No entiendo cómo alguien puede llamarse a sí mismo una estrella de rock basándose en supuestos altos niveles de habilidad en algo que es nerd por definición , luego ridiculizar a alguien más hábil que ellos como un “nerd”. Pero eso es una queja para otro día).

Soy autodidacta, pero me aseguro de al menos mantener los ojos abiertos y aprender todo lo que pueda de otros entornos. Escriba un código en un idioma diferente de forma regular, no se convierta en un “desarrollador de Android” o “desarrollador de .Net”, sea un desarrollador . Estar bien redondeado. Si tienes tiempo libre, mira algo completamente diferente a tu mundo normal. El código abierto lo hace fácil, y hay mucho código excelente para aprender, escrito por personas obviamente más inteligentes que yo.

Bueno, pocas de las cosas … Estas son tareas que los principiantes echan de menos …

  1. Use nombres de variables apropiados y significativos. No use nombres como abc o xyz. Tener nombres propios y significativos. Ej. Si una variable apunta a fs name, nómbrala como fs_name o fsName. Utilice húngaro o utilice el esquema de nombres de subrayado. Este es un error que cometí cuando comencé.
  2. Sangrar el código . Un código bien sangrado es más fácil de leer y entender. Esto ayudará a otros a leer y comprender el código.
  3. Documente bien el código. Escriba suficientes comentarios cortos que describan las funciones que está escribiendo. Use doxygen para documentar o cualquier otra herramienta si está disponible. Ayuda en gran medida cuando se trata de grandes bases de código y múltiples programadores trabajando. También ayuda en la entrega a otra persona.
  4. Intente diseñar primero y luego codificar . A menudo, un programador aficionado se enfrenta a un problema en el que tiene que volver a escribir algún código hasta que funcione correctamente. Esto sucede debido a la falta de diseño previo y considerando diferentes escenarios que una pieza de código necesita manejar.
  5. Comprenda completamente el problema que uno está tratando de resolver. Muchas veces los principiantes tienen prisa por resolver.
  6. Los lenguajes de programación nos brindan una opción para escribir rutinas / funciones. Que se puede reutilizar. ¡Muchos programadores aficionados terminan escribiendo un gran main (), que abarca varios miles de líneas de código o rutinas de escritura con varios miles de líneas!
  7. Evite duplicar código en todas partes. Si el programador está tratando de contribuir a los proyectos existentes, debe revisar las rutinas existentes y la documentación disponible. A menudo he visto un conjunto duplicado de códigos / rutinas escritas por todas partes, repetidamente con cambios menores. Use bibliotecas compartidas para escribir rutinas comunes que se pueden usar en todos los proyectos.
  8. Comprender el lenguaje a fondo y también sus características.

Bueno, solo soy flojo y me resulta doloroso responder aquí desde mi teléfono móvil. Pero estas son mis experiencias de la vida real que he visto mientras trabajaba (trabajado c / c ++). Feliz codificación …

Agregaré este: aprender un lenguaje de programación y / o marco y seguirlo con fervor casi religioso.

Creo que esto es especialmente probable que les suceda a los programadores autodidactas, que no han estado expuestos a varios idiomas durante su educación formal, pero esto no es necesariamente así. En cualquier caso, el peligro es que la persona llega a creer que debido a que tiene un martillo fantástico, todo es un clavo que necesita ser golpeado. Conduce a tomar malas decisiones (ya que básicamente no tienen ninguna opción) y limita su capacidad de encontrar trabajo, especialmente a largo plazo, cuando su idioma / marco elegido pasa de moda.

Cada programador profesional debe estar familiarizado con una variedad de herramientas para poder elegir la correcta para el trabajo y para que sus oportunidades profesionales no estén limitadas artificialmente.

1. Se deben seguir los estándares de codificación. Es porque puedes entender tu código, pero si una tercera persona está revisando el código, es posible que no lo entienda.
2. Como dijo Dima, necesitamos tener un caso de prueba para cada código que escribimos.
3. La optimización del código debe hacerse.
4. El código debe estar perfectamente alineado y los comentarios deben colocarse en los lugares apropiados.

Yo iría con:

  1. No escribir pruebas.
  2. No componentes de su código.
  3. No ajustar sus propios estándares de código de belleza y facilidad de uso hacia los comúnmente aceptados.

¡El mayor error que puede cometer un principiante es darse por vencido cuando comete un error …!

Su programación, fallas y tienes éxito. todo es parte del proceso para convertirse en un mejor programador cada día.

Use ampliamente los recursos en línea y aprenda de sus experiencias con la codificación.

¡Así que no pares!
Feliz codificación .. 🙂