El desarrollo de software es desafiante y muy divertido, pero hay varios factores que no dejan a los equipos tener éxito en proyectos de TI. Estos factores no suelen ser las herramientas o las tecnologías, sino que son las personas las que afectan el éxito de los proyectos de desarrollo de software. Venkat Subramaniam habló acerca de las verdades y mentiras del desarrollo de software cotidiano. Realizó una presentación en la conferencia CodeMash 2009, sobre los cuidados que los desarrolladores y gerentes de proyecto deben adoptar para asegurar el éxito de sus proyectos.
Estas son algunas de las mentiras del desarrollo de software sobre las cuales Venkat habló en su discurso:
Mito: Más tiempo y dinero resolverán nuestros problemas
Venkat dice que es importante tener claro los "objetivos de negocio" cuando se trabaja en los proyectos. Mostró estadísticas de que el 64% de las funcionalidades implementadas en un proyecto son rara vez o nunca utilizadas y cuanto mayor es la duración de un proyecto, menor será la probabilidad de que el proyecto tenga éxito. Los desarrolladores de software necesitan desarrollar lo que él llamó "software capaz y pertinente."
Mito: Debe ser bueno porque se trata de uno de los principales proveedores de software
Se preguntó si realmente es necesario el uso de EJB que (en algunos casos) hace que el desarrollo sea difícil y engorroso. Los desarrolladores son en parte responsables de esta situación (usando EJB para prácticamente todos los casos). Una de las razones para la adopción de EJB fue la competencia (y no una necesidad). La necesidad debe determinar la tecnología, no la tecnología determinar la necesidad. No es una buena evolución cuando la normalización ocurre antes que la innovación.
Frameworks como Rails y Spring nos mostraron que la innovación conduce a la normalización y lleva a los frameworks útiles y relevantes impulsados por la comunidad en cambio de por los proveedores.
Mito: Hacemos off-shoring porque ahorrará nuestro dinero
Venkat habla sobre el actual modelo de off-shoring y si este modelo está realmente funcionando o no. Comparó el modelo cuando las empresas hacen todo aquí en los EE.UU. y aún así no obtenían éxito. Entonces preguntó, ¿por qué colocaría océanos entre los diseñadores y los desarrolladores y esperaría resultados diferentes?
El modelo off-shoring se ha convertido en toda una estrategia de "Fallar-por-menos". Sugirió que los gestores de proyectos contraten desarrolladores inteligentes y experimentados, que puedan aprender rápidamente y, a continuación, les den las mejores herramientas, y prácticas. Un pequeño equipo de desarrolladores puede ser mejor que un gran equipo de desarrolladores por debajo de la media. Dijo que el off-shoring está aquí para quedarse, entonces debemos aprovechar las ventajas del talento real a nivel mundial.
Mito: Los lenguajes dinámicos no son seguros
Java que es fuertemente tipado, y aún así puede recibir un ClassCastException si no tienes cuidado al codificar; los mismos pasa con lenguajes como Ruby y Groovy. El tipaje fuerte por sí solo no mejora el código. El compilador es útil, pero es a menudo sobrestimado porque ningún compilador puede comprobar de forma plena la intención del programador. También recomendó que los desarrolladores tomen ventaja de los nuevos lenguajes dinámicos.
Mito: El tipado estático es esencial para la claridad del código
Venkat dijo que con disciplina, los desarrolladores pueden escribir código legible, comprensible y fácil de mantener en cualquier lenguaje. Sugirió las siguientes prácticas para mantener el código limpio y sostenible.
- Utilizar nombres descriptivos para métodos/clases.
- Escribir clases cortas y métodos cortos.
- Dejar que el equipo interactúe y se comunique.
- Escribir pruebas unitarias automatizadas. Las pruebas unitarias tienen redundancia de expectativas. Se requiere que se haga un buen diseño.
También habló de la importancia de las pruebas unitarias en el ciclo de vida del desarrollo de software. Las pruebas unitarias son el equivalente del software de los ejercicios: incluso siendo muy buenos, la mayoría de los programadores no lo hacen. Contribuyen a mejorar la salud del código y si el código es testeable el diseño es bueno. Venkat concluyó la presentación destacando que eso es importante para expresar la "intención" en el software.
De Venkat Subramaniam em Verdades e Mentiras do Desenvolvimento de Software Cotidiano