Este artículo comenzó como una respuesta al post «¿Por qué no contratar a los programadores .NET?» de David en el blog Expensify pero se hizo tan grande que decidí convertirlo en una entrada de mi blog.
Trabajo en UPAO, aquí trabajamos principalmente en la plataforma .NET bajo una metodología ágil con la cual generamos valor a la institución, en lo personal para mi realmente no me importa si alguien tiene .NET en su hoja de vida o no, porque no me dice nada de lo que son como desarrollador.
David hizo varias declaraciones en lo que no estoy de acuerdo y voy a tratar de dar mi opinión sobre estas cosas. No voy a entrar en detalles del lenguaje/plataforma ya que parece que se han discutido una y otra vez y David ha aclarado este «error tipográfico». Pero voy a añadir a la discusión que .NET es una plataforma desarrollada por Microsoft, sin embargo, en sí es mayor que Microsoft. No admitir esto es un insulto para el Mono, MonoTouch y la gente MonoDroid y muchos más.
Dicho esto, creo que David se está centrando demasiado en el lenguaje/plataforma. Los grandes desarrolladores vienen en todas formas y tamaños, y con estas personas las herramientas (lenguaje/plataforma/IDE) no importan. Son profesionales como para mirar un problema y sugerir una solución con la herramienta más eficiente. La mayoría de ellos saben varios lenguajes y plataformas, y no eligen una herramienta de calidad inferior.
Yo mismo soy experto en varios lenguajes y plataformas como Ruby y C++. Aunque me encanta la velocidad de Ruby on Rails que me da en el desarrollo, yo estoy (en su mayoría) restringido a aplicaciones web de base de datos. Si tratas de hacer cualquier otra cosa, no va a funcionar para ti. ASP.NET MVC toma un poco más de tiempo para empezar y el desarrollo es un poco más lento, pero por otro lado yo diría que es más flexible, aunque restringido a la plataforma MS. Creo que lo que estoy tratando de decir es que cada plataforma o marco tiene sus pros y contras y no hay blanco y negro.
También es importante la plataforma en el post desarrollo, incluso si la versión de .NET tardó más tiempo en desarrollarse. Ubuntu + Nginx + Phusion Passenger me ha causado mucho más dolor que Windows + IIS. Siento decirlo, y deseo que no sea cierto pero lo es.
Tengo casi 10 años de experiencia profesional y 8 de aquellos en los que pasó haciendo .NET (2 años C++). Volcándome en el desierto con una navaja suiza podría cocinar una ardilla, diablos sé MIPS ensambladas! Pero saliendo del escenario del desierto mi primera opción, probablemente no lo sería .NET.
¿Por qué elegir .NET? .NET es una plataforma más flexible y productiva que resuelve muy bien algunos problemas en ciertos ecosistemas, no elegir. NET en estos casos sería poco profesional.
¿Es bueno para empezar? Realmente no lo sé. Mi teoría es que un problema para empezar podría ser que no se pueden permitir el lujo. Necesitas Windows, Visual Studio, Windows Server, SQL Server, etc. Todo eso que cuesta dinero, dinero que podrías gastar en otras cosas. Ubuntu, Vim, Nginx, Passenger, etc son gratuitos. Incluso con BizSpark y WebSpark elegir un pila MS es aún más costoso en términos de como usas el hardware eficientemente (¡Sí! El mismo hardware puede servir muchas más de páginas PHP sobre Apache que páginas .NET en IIS).
Midiendo el flujo de caja, ¿Cual es más eficiente para ti? ¿Qué otra opción te ahorrará dinero al final?
Si sólo quitas una cosa de esto es que las herramientas no hacen el desarrollador. Es un conjunto completamente diferente de las habilidades y si no pueden aprender nuevas herramientas en un santiamén, entonces no eres lo suficientemente bueno todavía. Si tuviste mala experiencia con la contratación de los desarrolladores que tienen .NET en su hoja de vida y los requieres junto con otra tecnología es probable que tengas un proceso de contratación demasiado flojo que no realiza una comprobación para el conjunto de habilidades correctas.