¿Qué es la artesanía de software?

Interesante pregunta. Para mí, el término ‘artesanía’ implica algo sobre la forma en que se escribe el código real, más que sobre el diseño del sistema de nivel superior. Yo diría que el código bien elaborado hace lo siguiente:

  1. Sigue estándares externos
  2. Sigue los estándares internos
  3. Utiliza buenos patrones
  4. Es legible

Sigue los estándares externos. Si su grupo tiene estándares de codificación, sígalos. Si no le gustan los estándares, aún sígalos.

Sigue los estándares internos. Esto significa que el código debe ser internamente consistente. Los métodos que hacen cosas similares deben presentarse de la misma manera. Si un método sigue el patrón:

  si (éxito) {
     hacer algo();
   } más {
     handleError ();
   } 

no tengo otro método que comience:

  si (! éxito)
   {
     handleError ();

Utiliza buenos patrones. Con esto me refiero a patrones de codificación en lugar de patrones de diseño. Su código debe usar modismos apropiados para el idioma. (Utilice scoped_ptrs para la gestión de memoria en C ++, por ejemplo). Debe evitar ineficiencias obvias, como la posibilidad de aumentar los iteradores de C ++ o crear objetos que no se utilizan en todas las rutas de código.

Es legible Otros ingenieros leerán su código y usted lo volverá a leer dentro de unos años. El código debe ser lo más fácil de entender posible. Todos los elementos mencionados anteriormente se refieren principalmente a la legibilidad y a minimizar elementos inesperados en el código. Sus lectores deben preocuparse por la lógica de su código, no por tratar de averiguar por qué se ha utilizado una construcción no estándar. Si hay una construcción no estándar, sus lectores deben saber que está ahí por una razón, no porque haya cometido un error. (Piense en su código como un mueble. La superficie debe ser lisa y no debe atrapar una astilla si pasa la mano sobre ella. Cualquier irregularidad debe estar allí por alguna razón).

La legibilidad también se mejora mediante métodos razonables y nombres de variables, y mediante comentarios apropiados. No te excedas al comentar. Si es obvio, no te molestes en explicarlo. Pero tenga algún tipo de visión general para que el lector conozca el contexto. (Puede ser obvio que el código está transformando la entrada X en la salida Y, pero ayuda si el lector tiene alguna idea de por qué esto es necesario).

Está
1) El amor por la construcción (en este caso, el software)
2) La creencia de que no existe una metodología, lenguaje o herramientas absolutamente correctas: existe lo que usted sabe y tiene experiencia usando y todo lo demás
3) El reconocimiento de que siempre hay más para aprender y más para construir
4) Que se enorgullece de lo que construye, no solo para usted, sino para sus usuarios y todos aquellos que verán su código
5) Quieres que los que leen tu código sonrían (y no hagan una mueca pensando “¿Qué clase de basura es esta?”)
6) Intentas equilibrar la complejidad de tu arquitectura / diseño / código con las necesidades del día
7) Reutilizas donde puedes

Pero en última instancia, es la creencia de que siempre estarás aprendiendo y siempre estarás construyendo (a menudo al mismo tiempo) y que la Alegría está en el viaje, no en el destino.

More Interesting

¿Debo hacer una maestría en ingeniería de software si quiero convertirme en desarrollador de software? ¿Hay alguna alternativa mejor?

Mi IPC es bajo, alrededor de 6.5. ¿Cómo puedo obtener un buen trabajo de ingeniería de software?

Como desarrollador de software, ¿qué son los indicadores o las banderas rojas por el hecho de que paso demasiado tiempo en un boleto?

¿Cuál es el alcance de Pega? ¿Es una buena opción elegir al comienzo de una carrera en comparación con Java?

Trabajo como analista financiero para un banco. Estoy interesado en hacer un cambio de carrera y convertirme en desarrollador de software. Si me enseño a codificar con cursos en línea, ¿cuánto tiempo hasta que una empresa de tecnología pueda emplearme como desarrollador?

Además de OOP y la estructura y algoritmo de datos, ¿qué fundamentos de las ciencias de la computación deben poseer todos los desarrolladores de software (por ejemplo, compiladores)?

¿Por qué los desarrolladores odian el sistema operativo Windows?

¿Qué piensan los desarrolladores de software de mediana edad si están trabajando en los mismos lenguajes de programación, marcos y pila de software que un nuevo graduado?

¿Qué consejo u orientación le daría a un desarrollador de software avanzado que está tratando de iniciar una pequeña empresa de desarrollo?

Ir (lenguaje de programación): ¿Cómo puedo dejar de recibir de un canal que envía datos continuamente, después de un cierto tiempo?

¿Por qué muchos desarrolladores están molestos por los cambios en Angular 2.0?

¿Puede un desarrollador de software usar stackoverflow en su lugar de trabajo?

En su opinión, ¿qué hace que alguien sea un desarrollador de software sénior?

¿Existe un documento legal estándar que debería usar al contratar desarrolladores de software independientes?

¿Cuáles son algunos buenos cursos de certificación para desarrolladores de software profesionales?