¿Cuáles son las peores economías falsas (es decir, formas de ahorrar dinero que finalmente cuestan más de lo que ahorran) que prevalecen en la industria del software y cómo combatirlas?
¿Cuáles son las peores economías falsas (es decir, formas de ahorrar dinero que finalmente cuestan más de lo que ahorran) que prevalecen en la industria del software y cómo combatirlas?
Respuestas:
es decir, "Solo hazlo rápido, lo refactorizaremos más tarde". En primer lugar porque aún no he visto a alguien que participe en este comportamiento en realidad refactorizar más tarde. En segundo lugar, porque hacer las cosas de manera rápida, en lugar de hacerlo de la manera correcta, hace que sea más difícil agregar funciones futuras o resolver errores futuros, por lo que terminará perdiendo tiempo a largo plazo.
Lamentablemente, muchos todavía piensan que ahorra ciclos de desarrollo para que hagan algo rápido. Supongo que es posible, pero aún no lo he visto en la práctica.
Contratar a 2 desarrolladores baratos en lugar de 1 realmente genial. (por el mismo precio)
Mi ejemplo sería todo lo contrario del ejemplo de NimChimpsky , a saber:
Tratando de desarrollar en casa algo que se pueda comprar de forma inmediata.
Normalmente, esto ocurre debido a una falla en verificar el mercado para ver si ya existe algo que resuelva el problema. Esto puede ser agravado por los desarrolladores a quienes les gusta "sumergirse" en la codificación antes de hacer cualquier investigación y por los gerentes de proyectos que no tienen en cuenta ese tiempo = dinero.
Uno de los ejemplos más comunes que he visto en mi campo, el desarrollo web, son las empresas que intentan desarrollar un sistema CMS interno. Estos comienzan invariablemente pequeños, pero pronto se hinchan y se descontrolan a medida que las características se atornillan, mientras que todo el tiempo hay muchos productos y marcos gratuitos que serían mucho más adecuados.
No hay recursos dedicados para la gestión de proyectos.
He experimentado varias veces cuando se contrataron unos pocos programadores, y alguien que ya tiene un trabajo diario exigente debería haber gestionado el proyecto, pero de hecho estaba demasiado ocupado con otras tareas, por lo que el proyecto nunca ganó impulso. Los programadores hicieron "prototipos" y cosas por el estilo, pero sin una pista, gran parte de ellos se ejecutaban en círculos para parecer ocupados.
Mal equipo para nuevos programadores
Una vez experimenté una compañía donde la política era "los nuevos programadores tienen que trabajar en una PC realmente vieja con una pantalla pequeña hasta que demuestren que son dignos". No es de extrañar que tal política haya causado una selección negativa que haya alejado a las buenas personas que siempre tienen la opción de trabajar en un entorno más sano.
Podemos ahorrar dinero haciendo que los programadores se doblen como probadores / escritores técnicos
Si está pagando salarios de programador por el trabajo de probador / escritor técnico, está desperdiciando dinero y es probable que obtenga un trabajo de menor calidad que alguien que ha dedicado su carrera a esa tarea. Además, cuando un programador se enfrenta a una fecha límite ajustada, es muy probable que las pruebas y la documentación se caigan o se hagan a medias para cumplirlo.
Por cierto: los desarrolladores SIEMPRE se enfrentan a un plazo ajustado.
El código de investigación / lectura / escritura no relacionado con el desarrollo del producto es un desperdicio de recursos.
Algunos programadores e incluso gerentes creen en eso. Normalmente, solo hacen programación basada en el conocimiento en sus cabezas, e investigan y buscan respuestas cuando enfrentan problemas. No mejoran continuamente su conocimiento de manera proactiva. En mi opinión, siempre debemos mantenernos actualizados, y el conocimiento que reunimos nos sería útil para resolver problemas existentes y futuros. Por supuesto, debe asignar su tiempo sabiamente para hacerlo.
Esto también es similar a la respuesta de Dan . Algunos gerentes solo quieren que los desarrolladores se sumerjan rápidamente y desarrollen el producto de acuerdo con los requisitos sin tener que investigar los productos existentes en el mercado.
En muchos casos, la deslocalización cuesta más dinero. En mi empresa es muy difícil conseguir nuevos espacios para empleados, nos vemos obligados a externalizar. También es difícil conseguir contratistas en el sitio; hay una relación de 3: 1 en alta mar a tierra que se supone que deben mantener. En consecuencia, muchos equipos solo contratan una docena de offshore y apenas los usan, para que puedan obtener 4 contratistas en el sitio.
¡Largos bucles de retroalimentación!
Le sucede a todos: construyes algo que crees que es increíble y resulta que te equivocaste. Ese no es el problema. El problema es cuánto tiempo pasas construyendo antes de descubrir que debes parar.
En el nivel superior, ve este problema con ciclos de lanzamiento largos. Si construyes durante un año sin comentarios, estás jugando todo el año. Cuanto más a menudo suelte, más pequeños serán sus juegos de azar y mejor será el juego.
Pero también ocurre en los niveles más bajos. Como desarrollador, realmente me gustan las revisiones frecuentes de código (o, mejor, la programación de pares) porque limita la cantidad de tiempo que puedo seguir haciendo algo tonto antes de que alguien diga: "¡Oye, hay una manera más simple!" Por la misma razón, me gusta que mis pruebas unitarias se ejecuten rápida y frecuentemente, para poder atrapar y matar insectos antes de que crezcan.
Una vez que comience a notar la importancia de los ciclos de retroalimentación cortos, lo verá en todas partes. Por ejemplo, la noción militar del bucle OODA .
No es mi propia anécdota, pero una vez escuché de una tienda que dejó de proporcionar café gratis a sus desarrolladores, diciéndoles que en cualquier momento que quisieran tomar café, tenían la libertad de caminar a la cafetería más cercana (algo así como diez minutos viaje en cada sentido) y compre algunos.
Más o menos la definición de falsa economía.
Proporcionar estaciones de trabajo de pantalla única porque un segundo monitor es demasiado costoso . Incluso si solo le ahorra una hora de trabajo cada año, una segunda pantalla sigue siendo una buena inversión. Sé con certeza que el mío me ha ahorrado muchas, muchas horas de trabajo.
Una configuración de varios monitores puede hacer que casi cualquier tarea sea más eficiente, no solo las tareas de desarrollo. Tres monitores son incluso mejores que dos, pero el efecto se vuelve menos pronunciado con cada pantalla adicional.
Configuraciones de monitores múltiples:
El hardware más barato dado a un consultor cuando el consultor cuesta más de 150 $ / hora .
Poniéndolo en perspectiva, un mejor hardware puede al menos hacer que el trabajo sea 30 minutos más efectivo por día. Eso daría 30 minutos * 20 días de trabajo por mes = 600 minutos / mes = 10 horas / mes> más de 1 día de trabajo = 10 horas * 150 $ / hora = 1500 $
Ahora, ¿no sería un consultor más eficiente si tuviera una computadora de $ 1500? ¿Haría que el consultor esté menos irritado?
Ahora el problema parece ser que hay dos presupuestos, uno para el consultor y otro para el hardware de la PC.
Meses de trabajo ahorran días de planificación
(No invertir suficiente tiempo en la planificación)
Sospecho que lo más frecuente es que los gerentes simplemente no proporcionan a los desarrolladores las herramientas que necesitan para hacer su trabajo de manera eficiente.
Básicamente, punto 9 en la prueba de Joel .
Desafortunadamente, todavía se puede usar "arrojar (suficientes) cuerpos al problema" en algunos lugares. La Ley de Brook contrarresta esto de The Mythical Man-Month , aunque algunos requieren experiencia para aprender esta lección. En general, esto no es algo que pueda detener, ya que la gerencia puede creer la declaración falsa sobre agregar personas y no tener que pagar un precio por ello.
Reuniones diarias :
(meeting duration in hours) x (Y team members) x (average salary per hour) = ...
Comprar software estándar en lugar de desarrollarlo internamente.
Tengo experiencia en sistemas de gestión de escala empresarial, enfocados tanto en RRHH como en laboratorios biológicos.
Una solución estándar costaba £ 50-100k y necesitaba un mayor desarrollo y personalización para cumplir con los requisitos del negocio.
La solución desarrollada internamente tardó (<6) meses en desarrollarse, y otros proyectos se trabajaron en paralelo, y utilizó un desarrollador ya empleado.
Pasé del sector público donde teníamos un LIMS (sistema de gestión de información de laboratorio) desarrollado internamente a una gran industria farmacéutica internacional donde la implementación de una solución estándar había llevado más de un año y no había sido completada.
(6 meses de un desarrollador ya contratado que trabaja en otros proyectos en paralelo. Entonces ~ 10k. Y eso no incluye los costos de soporte asociados con la solución estándar). ¡El punto principal es que el sistema desarrollado internamente realmente se estaba utilizando! Entonces, tiene el beneficio de costo adicional asociado con eso, que no puedo calcular.
Estoy de acuerdo con sitios web básicos, etc., ¿por qué molestarse en desarrollar el suyo propio? Pero para cualquier sistema complejo grande y si ya tienes habilidades internas, lo construiría yo mismo .
Comprar productos caros disponibles cuando las alternativas de código abierto son mejores y gratuitas.
¿Cuántas empresas usan git? ¿Cuántas empresas usan algún control de versión empresarial de mala calidad?
Sí, hace que sea más fácil encontrar programadores para mantener el código, pero hace que sea más difícil encontrar buenos programadores que no solo aprendan la última palabra de moda que los contratará. Sí, hace que el código de bits individuales sea más fácil de entender, pero también lo hace tan rígido como un 2x4 y aumenta el volumen de código que necesita ser entendido. Sí, está respaldado por una gran corporación, pero dijo que una gran corporación innova de manera lenta y burocrática.
Malos gerentes de proyecto / jefe de equipo.
Dado que una persona incompetente tiene el poder de arruinar el trabajo de un grupo de personas. Al final, el proyecto funcionaría mucho mejor sin las decisiones de la alta gerencia (proyecto / equipo líder).
Dosifica el "Solo hazlo rápido, refactorizaremos más tarde" decide.
Faltan requisitos del usuario
Un paso importante y difícil de diseñar un producto de software es determinar lo que el cliente realmente quiere que haga.
Lo creas o no, a veces falta esta parte o está desactualizada. El costo es que uno crea funcionalidades que el usuario final nunca solicitó.
La productividad vale más que la creatividad.
La creatividad es difícil de medir en general, y la mayoría de las veces es imposible de observar, no importa medir, cuando se trata del desarrollo de software. La productividad, por otro lado, se puede medir (a menudo deficientemente) y se puede observar.
Como resultado, los desarrolladores que pueden (escribir más líneas de código | escribir código más rápido | recitar technobabble más rápido en respuesta a preguntas | son más visiblemente productivos) tienden a ser valorados más que aquellos que (usan menos líneas de código para resolver el mismo problema | tomar más tiempo para escribir el código, pero producir un producto más confiable | comprender el tema lo suficientemente bien como para responder preguntas en inglés simple y fácil de entender (resolver problemas de forma creativa).
Todo lo siguiente puede ser malo cuando se usa o no se usa inapropiadamente
software externo vs interno
Cumplimiento de ISO 9001 (economía: una mitigación de un riesgo de pérdida de MSS si la calidad del producto disminuye)
desarrollo / QA outsourcing
desarrollo / construcción / lanzamiento / procedimientos de soporte
Tener demasiados gerentes de entrega no facturables.
Hace un par de años, en nuestra empresa teníamos varios proyectos de gran presupuesto en marcha y el reclutamiento estaba en su apogeo. En ese momento, nuestra compañía contrató a demasiados gerentes de entrega (¡Muchos de ellos no eran de TI!) Y muy pocos codificadores / evaluadores. La relación de gerente a programador fue literalmente 1: 2. Más tarde, después de completar esos proyectos, tuvimos una situación en la que tuvimos a muchos de estos gerentes (algunos de ellos eran verdaderos holgazanes) sentados en el banco sin hacer nada. Tuvimos un ciclo de evaluación en el que todos obtuvieron poco o ningún aumento (incluso nosotros, los programadores trabajadores, suspiramos) para que la empresa no tenga que despedir a nadie. Afortunadamente, la compañía se dio cuenta de esta situación e hizo el RIGHTTSIZING en el primer trimestre de este año.
Optimización antes de perfilar (también conocida como optimización prematura).
Muchas veces he visto a alguien buscar una solución inteligente que complica innecesariamente el mantenimiento y la legibilidad debido a que es más rápido. Naturalmente, el código no ha sido marcado (ni siquiera con micro-puntos de referencia), por lo que rápidamente se vuelve "más rápido basado en el argumento más persuasivo" sobre una sección de código que probablemente no tuvo un impacto en el rendimiento general de todo aplicación por mucho.
Como tal, es una economía muy falsa, y el tipo de economía falsa que ocasionalmente enreda incluso a los profesionales experimentados.
Acceso limitado o nulo a internet
Porque, obviamente, sus empleados usarán Internet para jugar juegos de Facebook, no investigar demasiado las respuestas a preguntas técnicas sobre Stackoverflow.
En realidad, por supuesto, Internet es un gran impulso de productividad, y si bien puede ser apropiado usar algún tipo de filtro de sitio para sitios genuinamente dudosos, hay algo mal si está bloqueando el archivo Léame de Visual Studio o las páginas del gobierno local de Telford por alguna razón. "turismo sexual"
Hacer que sus desarrolladores usen un monitor de 15 pulgadas y una PC de baja especificación, ya que es el estándar corporativo.
Los monitores de tamaño razonable son baratos, rápidos de instalar y hacen que los programadores sean más productivos, además de hacer que sus programadores piensen que se preocupa por ellos.
Demasiados licenciados en administración de empresas (o similares), organizados jerárquicamente, que intentan aplicar lo que creen que es la gestión moderna: molestar a las personas con "KPI", "SLA" y qué no, requerir "informes" (sin, por supuesto, preocuparse por la infraestructura para generarlos), de modo que los programadores pierdan sus días rellenando elegantes hojas EXCEL, informes Q4 y demás, y copie de una gran herramienta de administración nueva y pegue en otra (parece ser la regla que estas herramientas nunca están integradas ni integradas entre sí) y asisten a reuniones donde se presentan los informes y las cifras (y todos se sienten culpables por no haber cumplido con este o aquel KPI).