Buenas! Este post surge a raíz de una interesante conversación que mantenido con Jorge Serrano, Eugenio Estrada, Pablo Núñez y Pablo Iglesias.
A ver empecemos… todo viene a raíz de las palabras de un iluminado que se pueden encontrar en http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers. Resumiendo este tio viene a decir que no contrata nunca a desarrolladores en .NET porque en definitiva no los considera buenos. Según él los desarrolladores en .NET sólo saben arrastrar cajas y poca cosa más. Bueno, es su opinión (no la comparto pero la respeto).
Eugenio publicó el siguiente tweet al respecto (http://twitter.com/eugenioestrada/status/52396715441000448):
A lo que yo respondí con el tweet que originó la conversación posterior (http://twitter.com/eiximenis/status/52397065011077121):
Luego ya empezamos a intervenir todos sobre el tema, que si sí, que si no, que si tal… La verdad es que en 140 carácteres cuesta expresar según que ideas, así que al final me he decidido escribir el post. En concreto yo decía que parte de culpa tenemos en la imagen que tiene de .NET, porque considero que como comunidad (de desarrolladores se entiende) nos falta cierta madurez.
Lo importante, como digo en mi tweet, no es lo que pueda opinar alguien, ya se sabe que las opiniones son como el culo: todo el mundo tiene la suya. Lo importante es si esa imagen de que los desarrolladores de .NET no somos “buenos” está extendida. Y si lo está, mirarnos un poco nosotros, como comunidad y ver si podríamos hacer algo mejor. Ahí iba. Y para empezar voy a dejarlo claro: No estoy de acuerdo con el tipo ese. Los desarrolladores de .NET somos tan buenos o tan malos como los de Java, PHP o cualquier otra comunidad (extendida, eh? que os conozco y me sacaréis algún ejemplo de algún lenguaje, como Brainfuck, donde haya que tener un Nobel para desarrollar). Además el propio autor considera a los de PHP y Java como buenos desarrolladores en contraposición a los de .NET.
Bueno, que me lío, como digo lo importante no es si eso lo piensa un iluminado o no. Lo importante es si lo piensan muchos. Y, mi percepción, es que hay bastante gente que opina como este tio. En general, creo, que la imagen de .NET en general y de los que desarrollamos bajo ella está por debajo de lo que se merece la plataforma y los que la usamos. Y es ahí donde honestamente creo que algo de culpa que tenemos. Recordad que este tio, sólo expresa su opinión, y no se le ve un talibán anti microsoft, se le vé un anti-desarrolladores-en-.NET que no es lo mismo.
Cuando digo que algo de culpa tenemos, lo resumo en que nos falta madurez como comunidad, en respecto a otras comunidades. Eso por supuesto, es una opinión personal, basada en mi experiencia. Es evidente que Microsoft pretende que desarrollar en .NET sea fácil. Eso se resume en muchas cosas: muchos recursos para aprender, mucha documentación y también muchos asistentes que realizan tareas. Eso no es malo, estoy de acuerdo con Jorge cuando dice literalmente que “Hay gente que por hablar de temas frikis se creen que saben más, pero a veces los problemas cotidianos requieren soluciones cotidianas”. Eso es lo que me gusta de .NET, que es fácil iniciarse en ella. Y entonces… ¿donde está el problema?
Bien, voy a generalizar a partir de ahora. Por lo tanto, por favor, que nadie se ofenda. El problema está en que al ser tan fácil desarrollar en .NET no profundizamos mucho. Nos quedamos en la superficie. Además MS nos facilita tanto las cosas que nos permite p.ej. desarrollar aplicaciones web sin conocer html o http. Un ejemplo concreto: he visto varias veces gente que desarrolla en asp.net poner un msgbox y dejar un iis “colgado”. Eso denota una falta total de conocimientos de como funciona la web en general (ojo, no estoy diciendo que tengamos que nacer enseñados). Y esa gente está haciendo aplicaciones porque .NET lo permite, por su facilidad. No he visto jamás a nadie desarrollando en jsp o php que se le ocurra hacer esto. Todas las decisiones tienen sus dos caras, y la que MS tomó de hacer .NET fácil acarrea estas consecuencias. Por supuesto no estoy diciendo que todos los que programan jsps o phps sean los putos masters del universo desarrollando aplicaciones web. Evidentemente que no. Habrá auténticos patanes desarrollando en estas plataformas. Seguro. Y harán aplicaciones. Seguro. Pero nosotros tenemos esta imagen y ellos no. Quizá, en proporción, seamos más. Quizá no y es todo un tema de imagen.
En general creo que somos una comunidad que nos cuesta innovar y buscar soluciones fuera del paragua de Microsoft. De nuevo voy a generalizar y seré un poco “duro”, que nadie se ofenda, por favor.
En general no sabíamos hacer unit test hasta que salió VS2005, y eso que nUnit ya llevaba su tiempo. El tema de builds automáticas e integración continúa era desconocida para nosotros, hasta que salió TFS. Y eso que nAnt y Cruise Control.NET ya existían. Por supuesto usar un modelo MVP para desarrollar aplicaciones de escritorio no sabíamos lo que era hasta que salió CAB (y honestamente después seguimos sin saberlo porque CAB era como era y tampoco llegó a pasar nunca de algo un poco freak dentro de .NET). Por supuesto hasta que Micrtosoft no sacó Entity Framework, no conocíamos que era un ORM, a pesar de que NHibernate ya tenía sus añitos. Y que decir de usar MVC para aplicaciones web? Nada, hasta que Microsoft sacó asp.net mvc. Y podría seguir con más ejemplos…
A lo mejor ahora parece que nos estemos despertando un poco, pero yo veo que seguimos danzando al ritmo que marca Microsoft. Si VS2011 integra una herramienta tipo SpecFlow empezaremos a hablar todos de las maravillas de BDD y como sin BDD no se puede desarrollar. Somos así.
Y eso creo que nos ocurre porque nos hemos acostumbrado a que Microsoft nos proporcione siempre el stack completo: base de datos, lenguajes, plataforma, APIs, buenas prácticas y nos diga que se puede hacer y que no. Lo que no esté en este stack de Microsoft, ni lo miramos. Pero cuando se incorpora algo nuevo, aunque sea peor que algo que ya existía pero no era de Microsoft, lo abrazamos sin dudarlo. Es por eso que creo que nos falta madurez como comunidad. En otras comunidades (sobre todo Java) nos llevan mucha ventaja en esto. No quiero entrar en el porqué, porque eso sería otro debate.
Y creo que todo esto contribuye a la mala imagen que podamos tener como desarrolladores de .NET. Y esto debería preocuparnos, porque si esa mala imágen se extiende entre los que al final nos deben contratar, entonces el problema lo vamos a tener nosotros!
Y por último respondiendo a una última pregunta de Jorge, sobre que se puede hacer para solucionar esto: Pues en general no lo sé. Intentando ser un buen desarrollador, en intentar aprender continuamente, en investigar que hay más allá y sobretodo no quedarse en .NET. Mirar en otros sitios que están haciendo y como lo hacen. Alguien me dijo un dia que todo desarrollador debería aprender (aprender como funciona y su filosofía, no convertirse en un crack) un lenguaje nuevo cada año. Me parece una visión muy acertada.
Un saludo a todos!
PD: Y para terminar, insisto en lo que he dicho antes. He generalizado. Ya lo he dicho pero lo digo de nuevo: No creo que los que desarrollamos en .NET seamos peores que los que lo hacemos en otras plataformas. Hay gente muy, muy, muy buena desarrollando en .NET, al igual que la hay en todas partes. Y al revés también, por supuesto.