Como profesional independiente, mis clientes a menudo me preguntan qué deben elegir entre elementos similares, ninguno de los cuales es mejor que otro. Ejemplos:
"¿Necesito que mi sitio web de comercio electrónico esté en PHP o ASP.NET?"
"¿Necesito alojar este servicio web ordinario en la nube o utilizar un servicio de alojamiento ordinario?"
"¿Cuál es mejor para mi nuevo sitio web: MySQL u Oracle?"
etc.
Tal vez exista, como máximo, el 1% de los casos en los que la elección sea relevante, y exista una razón real y objetiva para usar una sobre otra, según las métricas y los estudios precisos. En todos los demás casos, no importa en absoluto. Es totalmente, completamente irrelevante, ya sea porque no hay implicaciones¹, o porque esas implicaciones son demasiado pequeñas para ser tomadas en cuenta², o, finalmente, porque es imposible predecir esas implicaciones³.
Si sabe una cosa y no otra, la respuesta a esas preguntas es fácil:
“Puede escribir la aplicación en C # o Java, siendo ambos probablemente equivalentes en su caso. Tenga en cuenta que soy un desarrollador de C #, por lo que si elige Java, no podría trabajar en su proyecto y necesitaría encontrar otro profesional independiente ".
Cuando conoces ambas tecnologías, no puedes responder eso.
En este caso, ¿cómo explicarle al cliente que la pregunta que hace está sujeta a una guerra de llamas y no tiene consecuencias reales en su proyecto?
En otras palabras, ¿cómo explicar que ha elegido usar una tecnología en lugar de una equivalente por las razones relacionadas con los recursos humanos, sin dar la impresión de no ser profesional o de no preocuparse por el proyecto?
¹ Ejemplo: ¿MySQL es mejor (¿peor?), En términos de rendimiento, en comparación con Oracle, para un sitio web personal al que se accederá, oh, seamos optimistas, ¿dos personas por día?
² Ejemplo: para un proyecto determinado, me pidieron que valorara si el alojamiento de Windows Azure sería más barato que el alojamiento de la misma aplicación en un conocido proveedor de alojamiento ASP.NET. El costo reveló ser exactamente el mismo.
³ Ejemplo: su cliente tiene una idea de una aplicación futura (la idea en sí misma es extremadamente vaga). No hay plan de negocios, no hay requisitos, nada en absoluto. Solo una idea. Se le pregunta si Java es mejor que C # para esta aplicación. Que respondes
fuente
Creo que su premisa, que la decisión es en gran medida arbitraria, merece ser cuestionada. Estoy de acuerdo en que no quiere terminar en parálisis de análisis donde tiene meses de reuniones de comité, pero vale la pena considerarlo. Visto desde un alto nivel, la elección de tecnología rara vez es arbitraria. Es clave para la estrategia comercial, ya que influye fuertemente en dónde una empresa puede ir en el futuro, y es el rol del desarrollador guiar a la compañía a través del proceso de decisión.
Los detalles específicos de la tecnología, como el uso de MySQL de árboles B frente a los de Oracle, o la sintaxis de PHP frente a la de ASP.NET , por supuesto, están abiertos a un gran debate religioso entre los programadores y realmente se reducirán a su propio gusto. Dado que un consultor similar a usted mismo podría tener una opinión radicalmente diferente, esas cosas son bastante arbitrarias. Y está bastante bien establecido que cualquier desarrollador que sea competente en una tecnología dada hará un buen trabajo de todos modos. Entonces, los temas más importantes para el negocio no son las minucias del idioma, sino preguntas de nivel superior como:
¿Cuál es el escenario de implementación? Ciertas tecnologías se prestan a un enfoque más directo, especialmente si existen servicios de alojamiento en la nube como Heroku . A algunas compañías les gustará eso, otras necesitarán hospedarse, tener una mayor presencia de administradores de sistemas, etc.
¿Cuál es la duración y el alcance del proyecto? PHP, por ejemplo, es posiblemente más fácil que Java para iniciar un proyecto, pero es más difícil de escalar y mantener durante muchos años.
¿Qué tipo de desarrolladores atraerá la tecnología? Para Java, es más probable que obtenga personas con experiencia empresarial. Para PHP, puede obtener más tipos de diseñador cruzado o tipos de administrador del sistema. Para Node.js , obtendrá más desarrolladores front-end y experimentales, para Haskell, una multitud académica, etc. Todos los estereotipos que conozco, pero le dan al negocio algunas pistas. Cada uno de estos grupos tiene sus propias culturas, expectativas sobre los pagos y el entorno laboral, y formas de trabajar entre ellos y con el resto de la organización.
¿Cuál es la disponibilidad de los desarrolladores? Asumiendo que los desarrolladores tienen que estar físicamente presentes, ciertos lugares tienen ecosistemas particulares. En una ciudad llena de startups, habrá muchos desarrolladores de Ruby on Rails y PHP, en una ciudad llena de departamentos gubernamentales, habrá muchos Java / MS, etc. La gran mayoría de los lenguajes de programación en el mundo deben descartarse simplemente sobre esta base.
Esos son sólo algunos ejemplos. Los factores más importantes dependerán de la situación, pero el punto principal aquí es que las empresas necesitan adoptar conscientemente las tecnologías que se ajustan a su estrategia, cultura y circunstancias.
fuente
Le daría al cliente una matriz de comparación objetiva sobre la viabilidad de usar esa tecnología. Por ejemplo:
En tu matriz:
Etc.
Dependiendo de cuántos elementos en su matriz, uno debe obtener rápidamente una puntuación y determinar la viabilidad de usar esa tecnología en comparación con la otra. En algunos casos, MySQL puede ser mejor, en otros Oracle.
fuente
Explíquelo en términos que entiendan: dinero. Puede decirles que eligió X sobre Y porque, aunque ambos hubieran sido adecuados para el proyecto, está más familiarizado con X que con Y. De este modo, podrá entregar la aplicación a un costo menor cuando usando X que si fue escrito usando Y.
fuente
"¿Prefieres conducir un Ford o un Chevy?" sería la analogía de manejo que descartaría para ver si pueden captar la idea de que la pregunta no va a ninguna parte. Una pregunta similar podría ser: "¿Cuál es mejor una hamburguesa o una pizza?" donde sin agregar más restricciones, la pregunta tiene una variedad de posibles respuestas que uno podría dar.
La otra forma de ver esto es preguntando por qué es importante saber esto y, dependiendo de qué material adicional se pueda encontrar al aclarar la pregunta, esto puede conducir a una mejor respuesta. Algunas personas pueden preguntarse: "¿Qué se utilizó para construir mi sitio de comercio electrónico?" aunque preferirían ser impresionantes e incluir un par de palabras de moda.
fuente
Muchas buenas respuestas ya, pero una cosa que noté no se ha mencionado: esta es una excelente oportunidad para una divulgación completa de su parte. Por ejemplo,
"Ahora me gano la vida principalmente de la tecnología <foo>, así que no soy completamente imparcial. Sin embargo ..."
Realmente creo que ganas credibilidad con este tipo de declaración.
fuente
Hay casos raros en los que una tecnología es claramente inferior a otra: "¿Debería desarrollar mi sitio web en Python o Cobol?", Pero sobre todo es una cuestión de caballos para los cursos.
Hay una metodología que uso para decidir qué tecnología se adapta a un cliente:
La mayoría de las veces la elección se detiene en el paso dos. Si el cliente usa Acme Widgets , tiene personas con experiencia en el uso de Acme Widgets, tiene un conjunto de estándares, control de cambios y procedimientos de gestión creados alrededor de Acme Widgets y Acme Widgets pueden hacer el trabajo, entonces Acme Widgets es el camino a seguir, incluso si ¡Ezee DohDahs es técnicamente mejor para esta tarea!
fuente