1) Explicar lo que se hace o lo que no se hace
Es muy complejo lograr que las personas que no saben programar, entiendan qué es el trabajo que uno realiza, esto incluye a clientes, jefes y colegas.
2) Crear nombres
Indicar nombres para variables, funciones, objetos y clases suele ser siempre un dolor de cabeza.
3) Estimar el tiempo para realizar las tareas
Es prácticamente imposible conocer todos los nuevos problemas que pueden aparecer cuando se está desarrollando una tarea.
4) Tratar con otras personas
Siempre será mucho más simple preguntarle y obtener una respuesta de una máquina que de una persona. Lo mismo para la realización de tareas.
5) Trabajar con el código de otra persona
El principal inconveniente es que no hay dos programadores iguales y antes de modificar un código, es necesario comprenderlo en su totalidad y eso implica una tarea difícil y lenta.
6) Agregar funciones que no estaban contempladas
Esto implica romper con la estructura lógica con la que se venía desarrollando, toda clase de agregados o nuevas funciones es parte del trabajo que nadie quiere hacer por lo tedioso y poco profesional que resulta.
7) Desarrollar documentación
La mayoría de la documentación nunca será leída por nadie, sin embargo los programadores se ven obligados a escribirlas.
8) Realizar pruebas
Hacer testing de los productos que uno mismo desarrolla es parte del trabajo que muchas veces los programadores tienen que realizar y sin embargo no es su principal habilidad ni deseo.
9) Diseñar soluciones
Resolver cómo ir del punto A al punto Z esquivando los puntos intermedios suele ser algo frecuente y muy molesto.
10) Recibir el pago en tiempo y forma
Los programadores freelance en general, son pagos fuera de tiempo y fuera de forma.