Después de haber leído y disfrutado mucho más Joel on Software me compré Joel on Software esta semana y parece que es similar maravilloso. Ambos libros son básicamente copias impresas de su blog y hacer para entretener a la lectura a pesar de que están llenos de conocimiento a partir de décadas de desarrollo de software con éxito.
Artículo Medición de Joel de 2002 no es su mejor trabajo, pero leer Joel me ayudó a cristalizar algunas vagas nociones que han sido chocando alrededor de mi cabeza durante años. Los aspectos del software que son más fáciles de medir son en general las medidas menos valiosos. Por ejemplo: líneas de código. Cuantas más líneas de código, en general, la peor de su software es, es hinchado y complicado. En general, los menos líneas de código para la misma funcionalidad, el mejor, aunque llevado al extremo, usted puede hacer algo completamente ilegibles e imposibles de cambiar, sin tirarla a la basura y empezar de nuevo. ¿Cuántas líneas de código son las adecuadas para el problema que está tratando de resolver?
Del mismo modo, el aumento de la complejidad por lo general hace un buggy de productos, inutilizable, o ambos. Pero la disminución de la complejidad, llevado al extremo, puede hacer un producto inútil (que no hace lo que tiene que). Pero ¿cómo se mide el nivel de complejidad que es «justo» para el problema que está tratando de resolver? Bichos es una métrica interesante porque a pesar de que menos errores es mejor, el principio de Heisenberg entra en juego de tal manera que no hay forma de medir los errores sin sesgar los resultados. Scott Adams lo resume muy bien:
http://www.joeindie.com/images/dilbert-minivan.gif
Pero hay un indicador que combina y supera a todos los demás en casi cada forma significativa: la satisfacción del cliente. ¿El software resuelve el problema del mundo real que se pretendía para la gente que más lo necesita? Esa es la única cosa que importa. No ciclomática complejidad, acoplamiento eferente, o cualquier otra medida que una computadora puede hacer en el código directamente. Se ha de satisfacer las necesidades de alguien.
Hace poco vi Objectified que era una película muy interesante. Pero yo no sabía si reír a carcajadas o mirar con horror a una artista que hizo un robot que requiere la atención humana para hacer lo que sea necesario. El clip muestra a una mujer vestida como un asistente de vuelo que se inclina hacia abajo para que esto pudiera susurrarle al oído para que ella sabría para moverlo hasta el otro lado de la habitación. Esto es exactamente qué parte de nuestro software falla. La tecnología que creamos que se supone para hacer nuestra vida más fácil, mejor y más enriquecedora. No hacer nosotros es esclavo.
¿Con qué frecuencia es la nueva versión de un producto de un retroceso de la edad? Me acuerdo de una persona que trabajé en realidad la publicidad que con la nueva versión de su componente arquitectónico, lo que antes le llevará un clic ahora le lleva varios y te hace esperar más tiempo. ¿Cómo se supone que eso es una buena cosa? Es más lento y más difícil … ¿por qué?
Rackspace es a algo, darse cuenta de que lo que se obtiene a partir de una empresa de alojamiento no es servidores, pero el servicio. Cualquier persona puede montar un par de servidores. Pero la primera vez que su servidor se cae y su empresa de alojamiento no quiere o no puede responder, te das cuenta de que el servicio es lo que cuenta. Tal vez me estoy empujando esto un poco demasiado aquí, pero creo que el desarrollo de software tiene más en común con una empresa de hosting que una tienda de descuento. Que el cumplimiento de las necesidades del cliente, proporcionando un excelente servicio es más importante que los detalles de implementación del producto. El software es más como una extensión de dicho servicio (que sirve al cliente en vez de un ser humano al servicio del cliente) que como un producto retractilado. />
Proporcionar un siervo electrónica autónoma efectiva significa entender la necesidad del cliente y el diseño de algo que satisfaga esa necesidad, entonces se comunica que la comprensión de las personas que realmente tienen para construir el software. Conseguir que emocionarse, o al menos involucrados en la resolución de problemas reales de los clientes en lugar de sólo pensar en algún detalle arquitectónico o siguiendo servilmente una especificación.
Obviamente, hay trampas. En El Iceberg Secreto Revelado, Joel dice que «Los clientes no saben lo que quieren.» Y es verdad. En hacer que los usuarios felices por Ignorando Requisitos discuto lo que debería haber llamado «Síndrome de Excel», donde los usuarios describen el problema como si fuera la solución de Excel. No lo es. Si lo fuera, lo habrían hecho una hoja de cálculo en lugar de contratar a usted.
Una última cosa … Cuando digo, «cliente» no me refiero sólo a las personas de su empresa sirve. Quiero decir el público objetivo de su software, que puede estar dentro de su empresa en lugar de fuera de ella. Cuando trabajaba para Fidelity, trabajé para un pequeño grupo llamado CMTF (ahora Pyramis) que maneja los planes de jubilación para las grandes organizaciones. Creo que el monto mínimo para abrir una cuenta era más de un millón de dólares. Después de años de trabajar en la «web-site de cara al cliente» Me enteré de que los principales usuarios de este sitio había un puñado de gente de servicio al cliente dentro de Fidelity. Los clientes podrían acceder a ellos, hacer una pregunta, y el representante interno usarían el sitio web para encontrar la respuesta. Si hubiéramos sabido esto desde el principio, podríamos haber diseñado de manera muy diferente. Eso fue hace años y la mayoría de la gente está cómoda en el registro y el acceso a su propia cuenta en la actualidad, pero si usted está a cargo de miles de millones de dólares, es posible que tenga su secretaria llame a la compañía de inversión y entregar el teléfono para obtener la respuesta a su interrogar verbalmente. Sin contraseña, ningún registro en, simplemente «Sí señor Big-Wig. Es a los 42 millones de dólares y cambiar Mr. Big-Wig. Yo estaría encantado de explicar que para ti …»
En resumen:…….
1) Averiguar la necesidad real
2) Hazle frente
3) Mida su éxito por preguntar a sus clientes
4) Hágalo mejor la próxima vez (PDCA).