Por lo tanto, todos hemos oído hablar de The Programmers Bill of Rights y XP tiene un concepto similar.
Es una queja común en estos días que escuchemos mucho sobre los derechos de las personas, pero no tanto sobre sus responsabilidades, así que lo que debería estar en la lista de responsabilidades de los programadores. Esas son cosas que deberían hacer, que pueden encontrar desagradables, pero que separan a los programadores que actúan de manera profesional y responsable, de aquellos que no lo hacen.
Estoy principalmente interesado en los desagradables y los que tienden a no suceder. Esos son los que los programadores tienden a eludir y evitar, en lugar de los que el 90% de los programadores realmente quieren hacer (como siempre refactorizar y usar el control de fuente).
Entonces, ¿qué debe estar en la Lista de Responsabilidades de los Programadores?
fuente
Respuestas:
Un programador tiene la responsabilidad de hacer retroceder los requisitos pobres en lugar de implementarlos ciegamente. Esto incluye decirles a los clientes que lo que quieren es más costoso que otras opciones o tiene un conjunto particular de riesgos. También incluye comunicar malas noticias de manera profesional, sin gritar, llamar estúpidas a las personas, lo que implica que son estúpidas u otro comportamiento infantil. Si retrocede, debería tener una serie de razones (más que "No me gusta SQL Server y no lo usaré") y un plan alternativo para presentar.
Sin embargo, el programador también tiene la responsabilidad de aceptar decisiones y usar herramientas o diseños que pueden no gustarles si no se acepta su rechazo. Si se solicitó un informe en SSRS, es inaceptable entregarlo en Crystal Reports (que el cliente puede no tener). Si se requería una solución .net, entregarla en Haskell es inaceptable. Si nadie más en el equipo usa una herramienta o lenguaje que usted quiera usar, no es profesional usarlo si la gerencia no está de acuerdo en que es la mejor herramienta para el trabajo en particular.
Un programador tiene la responsabilidad de probar su trabajo. (Esta no debería ser la única prueba, pero ningún programador profesional debería enviar el código que no ha probado). Esto incluye probar incluso las ramas del código que no espera que llegue muy a menudo. Si tiene un conjunto de IF anidados, pruebe todas las rutas posibles.
Un programador tiene la responsabilidad de manejar los errores y excepciones con gracia y de escribir mensajes de error que el usuario verá que son profesionales y neutrales, no bromas ni insultos.
Un programador tiene la responsabilidad de proteger los datos privados, proteger el código de propiedad que escribe para la empresa y proteger a los usuarios de una catástrofe (incluso una catástrofe autoinfligida) del uso de la aplicación.
Un programador tiene la responsabilidad de asegurarse de que su código sea mantenible y esté en control de la fuente.
Un programador tiene la responsabilidad de coordinarse con otros para asegurarse de que sus cambios no afecten negativamente lo que están haciendo.
Un programador tiene la responsabilidad de recomendar la mejor opción para el cliente de herramientas o idiomas en la fase de diseño, no la herramienta / idioma con el que quiere jugar y aprender.
Un programador tiene la responsabilidad de trabajar con todo el personal apropiado para un proyecto, incluidos los que no le gustan. No es tu trabajo que te gusten las personas, es tu trabajo trabajar con ellas y ser cortés.
Un programador tiene la responsabilidad de producir un producto que haga lo que se especificó en un plazo razonable. Si no se va a cumplir el plazo, él o ella tiene la responsabilidad de informar a la gerencia al respecto tan pronto como se sepa.
Un programador tiene la responsabilidad de informar a la gerencia del proyecto sobre los impedimentos para hacer el trabajo. No pueden arreglar lo que no saben.
Un programador tiene la responsabilidad de hacer toda la tarea, no solo las partes divertidas e interesantes. Cada trabajo tiene algunas partes aburridas, aún deben hacerse. Esto incluye cosas como hojas de tiempo y agregar elementos de discusión al software de gestión de proyectos. Incluye cosas como documentación, revisión de código, etc.
Un programador tiene la responsabilidad de aprender el dominio comercial que está apoyando, no solo los conceptos de programación.
Un programador tiene la responsabilidad de mantener sus habilidades actualizadas.
Cuando un programador se equivoca, tiene la responsabilidad de hacer todo lo que esté a su alcance para solucionar los problemas tan pronto como sea humanamente posible. Esto puede incluir llevar las malas noticias a la administración en lugar de tratar de ocultar que acaba de eliminar una tabla crítica en la base de datos de producción.
Un programador tiene las mismas responsabilidades que cualquier otro trabajador: presentarse a tiempo, trabajar las horas contratadas, solicitar vacaciones por adelantado, responder mensajes telefónicos y de correo electrónico (diablos para leer sus correos electrónicos), completar los formularios requeridos para RRHH, etc.
fuente
Cada programador debe hacer que su código sea legible por otros.
fuente
El programador es responsable de la privacidad y seguridad de todos los datos proporcionados por el usuario. Especialmente contraseñas, números de tarjetas de crédito, direcciones de correo electrónico y ubicación física.
fuente
No hagas que el usuario pierda su trabajo.
Esto es más difícil de lo que parece ... el trabajo es más que simplemente "datos en un archivo" ... es cualquier momento que el usuario haya pasado con su software.
Por ejemplo, si el usuario completó su formulario de 30 campos con 29 elementos válidos y 1 no válido, no borre todos sus datos válidos para quejarse del 1 no válido (diablos, ni siquiera borre el no válido .. tal vez sea largo y solo requiera una corrección menor, o el usuario no recordará lo que era antes si lo borra)
Un ejemplo no obvio pero importante es lo que Windows y prácticamente cualquier otro software de "administrador de archivos" se equivoca ... si paso media hora con cuidado, presiono Ctrl-clic para seleccionar un conjunto de archivos y accidentalmente hago clic en lugar de Ctrl-Click, no debería borrar todos mis archivos previamente seleccionados, haciéndome comenzar de nuevo.
Otro que se equivocaron ... si accidentalmente presiono Ctrl-A (en lugar de Ctrl-S justo al lado), no debería perder mi lugar en el archivo y colocar el cursor al principio ... Llamo encontrar el lugar correcto en el archivo "trabajo" que el programa ha "perdido".
Otro más: el diálogo "commit" de TortoiseSVN tiene una larga lista de archivos. Antes de presionar "Confirmar", puede bajar la lista de archivos, haciendo doble clic en cada uno para ver sus cambios en un segundo diálogo. Para hacer esto rápidamente, a veces uso solo el teclado, presionando
<Esc>
para cerrar el segundo diálogo y volver al primero. Si accidentalmente presiono<Esc>
dos veces, también cierra el primer cuadro de diálogo, lo que hace que me olvide de qué archivo estaba haciendo.fuente
Un programador tiene la responsabilidad de respetar el sistema en el que se ejecutará su programa. Una vez finalizado el desarrollo y las pruebas, el programa se implementará para ser utilizado para el propósito previsto, y eso generalmente involucra a otras personas que lo ejecutan en sus computadoras. El programador debe tener esto en cuenta: su programa se ejecuta en la propiedad de otra persona , no en la suya, y debe comportarse como un huésped en su hogar en lugar de irrumpir como si fuera el dueño del lugar.
Por ejemplo, su programa no debería:
fuente
Del Manifiesto para Software Craftsman :
fuente
Mírese en el espejo y posiblemente reconozca las peores cualidades de un programador en sí mismo. Luego trabaje para eliminarlos cada día.
fuente
Algo de eso se aplica a las responsabilidades de "Una empresa de programación ".
fuente
Especialmente cuando el programador proviene de otra plataforma / lenguaje. Es terrible encontrar al programador luchando por algo que proporciona la biblioteca central o hacer un mal uso de la ventaja de la plataforma debido a la ignorancia.
Es muy importante tener el código documentado para que otros lo usen, pero cuando se trata de mantenimiento, el código de auto documentación puede literalmente ahorrar horas y horas de frustración.
Por ejemplo, compare:
a
fuente
La programación es una profesión, no una habilidad. Esto significa que un programador tiene la responsabilidad de mantenerse actualizado en su campo sobre las últimas herramientas, técnicas y tecnología.
Esto puede significar presionar a los gerentes para que den tiempo para permitir un aprendizaje y capacitación continuos, o hacerlo en su propio tiempo.
fuente
1) Explique claramente que una solución a cualquier problema tendrá compensaciones entre rendimiento, costo, tiempo y calidad.
2) Complete la documentación relevante, ya sean notas o planes de prueba. (la documentación variará con el tipo y tamaño de la compañía)
3) Solicite las herramientas correctas para su trabajo (muchos simplemente se quejan pero nunca se acercan a su jefe con un caso razonable para obtener lo que necesitan)
... Otros sin duda a seguir.
fuente
Cuestionar cualquier cosa: un programador debe tener la responsabilidad de preguntar sobre cualquier cosa que un sistema deba hacer o manejar. Esto puede incluir preguntar qué pueden ver los usuarios como preguntas tontas, ya que hay varios sitios dedicados a mostrar exactamente lo que los usuarios pueden hacer. Daily WTF y SharkTank son un par de ejemplos, aunque estoy seguro de que hay otros.
fuente
Es por eso que los gerentes deben asegurarse de que tienen todo para su objetivo.
fuente
Aquí está mi propuesta.
(Para "programador" quiero decir "programador", no "hacker de fin de semana", por lo que todo lo que un programador debería hacer está implícito).
fuente
5 preceptos del gremio de programadores
1.) verifique su código semanalmente y en días festivos.
2.) satisfacer las necesidades de la comunidad de programación.
3.) lea al menos un libro de programación por año.
4.) ir a al menos una conferencia de programación por año.
5.) Reconoce tus errores.
fuente
Agregaré "siempre documentar cualquier suposición hecha" a la lista. :-)
fuente
Un programador no debe hacer ni implementar nada que no sea ético o ilegal, como escribir virus o piratear los sistemas de otros (a menos que sea para descubrir agujeros de seguridad y luego informar a la víctima al respecto y lo que puede hacer para evitar que esto suceda explotado por cualquier hacker malicioso).
fuente