Introducción
La pregunta que muchas personas se hacen cuando quieren aprender .NET es “¿por dónde $#¡n&@dos empiezo?”
De eso se trata esta guía. De darte una orientación, un punto de partida para comenzar a aprender.
—“Un momento, ¡tú me dijiste que me ibas a enseñar a dotnetear de manera profesional!”
Tranquilo... no me hagas sacar la cubeta de agua.
La verdad es que aprender “.NET” no solo es aprender una cosa—un lenguaje en particular, por ejemplo—sino más bien una serie de tecnologías y conceptos. Tengo por ahí compañeros que, por ejemplo, vienen de desarrollar en COBOL y para ellos el reto para dar el brinco a .NET es mayor porque no solo tienen que aprender una sintaxis nueva, sino tienen que aprender desde cómo usar Visual Studio, qué jodidos es XML o hasta qué son los Web Services.
Si a eso le agregas que para hacer un sistema moderno decente tienes que tener al menos las bases de orientación a objetos (OO) pues rápidamente comienzas a hablar de cosas que al parecer no tienen que ver con .NET, pero son esenciales para poder sacarle el provecho máximo.
Y si para rematar le agregas que el .NET Framework en sí trae mucha —casi demasiada—funcionalidad de cajón, pues es fácil perderse cuando quieres hacer algo sencillo o específico (como escribir un archivo, por ejemplo).
Así que primero lo primero.
¿Qué se necesita para usar esta guía exitosamente?
- Curiosidad y una mente abierta—habrá cosas que quizá tengas que re-aprender si las has manejado en otras “plataformas”/lenguajes/herramientas.
- Mucha energía—hay mucho material que cubrir.
- Hacer las actividades, prácticas y lecturas. O si te quieres ver muy salsa, podrías únicamente ver los objetivos de cada tema, buscar información por tu cuenta y brincarte directamente a la sección de preguntas para ver si puedes contestarlas.
- Sentido del humor—nada de andar de amargoso, negativo o malvibroso aquí, ¿eh?
Yo asumo lo siguiente:
- No tienes conocimiento previo de .NET o de aplicaciones Web.
- Tienes nociones de conceptos básicos de orientación a objetos (encapsulación, herencia y esas cosas). Si no los tienes, pues lee esto antes de continuar.
- Tienes conocimiento y experiencia desarrollando con algún lenguaje de programación estructurado o moderno (Visual Basic, C, C++, Java, Pascal, etc. y no, COBOL no cuenta pero no se las voy a regar demasiado si vienen de ahí).
- Tener conocimiento de HTML no es requerido, pero sería muy útil.
El estilo de la guía
Ten en mente que esto es una guía, y como tal está diseñada de manera que tu puedas hacer las actividades de manera independiente, a tu propio paso, o no hacerlas, según tu nivel de experiencia.
Originalmente, diseñé las actividades para que le tomara a una persona aproximadamente 3 semanas en completar, si se aplica 8 horas al día.
—“Ay no, ¡qué hueva!”
Mmmta, ya empezamos.
Como dije, aprender a dotnetear no es tan sencillo como nomás aprender un lenguaje. Para en verdad sacarle provecho, hay un montón de cosas nuevas que aprender. Cuando yo comencé con este rollo, me tomó como unos 2 o 3 meses comprender cómo se hacían las cosas, y eso que yo tenía—según yo—la experiencia apropiada: años de desarrollo en ASP clásico, sabía VB Script y Visual Basic, había hecho sistemas con arquitectura por capas, incluso le moqueaba bien al COM y al COM+/DCOM. O sea que yo me sentía una chucha cuerera. Y luego comencé a aprender a dotnetear—por mi cuenta, porque en aquel entonces casi no había libros—y me di cuenta que “todo” había cambiado.
Por un lado pensé “Chin…ita, ¿y ahora, quién podrá ayudarme?” porque ni el Chapulín Colorado, me cae. Pero por otro lado, lo vi como una oportunidad de aprender cosas nuevas—una habilidad que debes tener en el ámbito de la tecnología por que las cosas cambian a cada ratito.
La moraleja es: si tienes experiencia con herramientas anteriores de Microsoft, no te preocupes, vas a tener que des-aprender mucho, pero te será familiar. Y si no tienes experiencia con herramientas Microsoft, tampoco te preocupes porque estás al mismo nivel que los weyes como yo, que tuvieron que dejar toda esa experiencia un poco de lado para aprender la “nueva” forma de hacer las cosas.
Y si ya tienes algunas nociones de .NET pues ¡qué bien! Quizá te convenga irte a secciones específicas de la guía. Aunque aún así te recomendaría que le echaras un vistazo a las preguntas de revisión, porque no tienes idea de las cosas que crees saber pero en realidad no tienes la más put… digo… mínima idea de lo que en realidad es.
Muy bien. Una última advertencia—lo prometo—que debo hacer es que las actividades que diseñé, en su mayoría, utilizan libros o videos que están en inglés.
—“Ókela, ¿pos no que la guía era en español?”
Pues por eso les dije que la guía estaba en pocho. Desafortunadamente, la mayoría del material que hay tanto en el Web como impreso o incluso en video está en inglés, así que si se han resistido aprender pues esta es una buena excusa. Ahora, sé que Microsoft tiene una lista de editoriales que distribuyen sus libros en Latinoamérica, y por ahí me fijé que McGraw-Hill Interamericana maneja algunos de ellos en español.
La verdad es que yo siempre he estado en contra de los libros técnicos en español—para cuando salen ya el contenido está “fechado” o casi obsoleto, etcétera—pero esa es harina de otro costal que pondré en el otro lado.
La excepción a la regla serán los temas que tratan de conceptos un poco más abstractos. Ahí sí verán algunos artículos míos donde profundizan más en el tema, porque creo que sí hay una falta enorme de recursos en español para explicarlos bien, y muchas personas, por deficiencias en su inglés batallan en comprenderlos bien. Estoy hablando de conceptos elementales que son importantes de manejar al derecho y al revés.
Mi esperanza es que si algún día junto los suficientes temas—de acuerdo a mi tiempo libre y ganas—pues poder publicar un librito en línea. Pero por ahora tendremos que conformarnos con esta guía.
¿Por qué aplicaciones Web?
Las razones son sencillas:
- Es lo que más conozco, y puedo enseñar.
- Son las que manejan más tecnologías diversas y términos raros: HTTP, HTML, XML, CSS, JavaScript… ¿quieren más?
- Son las que parecen tener más auge últimamente—para bien o para mal.
Además, diseñé el rollo de manera que toda la primer parte de la guía te enseña cosas “genéricas”, que aplican de igual manera en una aplicación para Windows o para el Web. Así que si estás interesado en programar para Windows Forms, pues lee la primer parte y detente cuando llegues a las cosas de Web.
¿Por qué C#?
Pues porque necesitaba escoger un lenguaje. Como te darás cuenta en la siguiente sección, con .NET puedes escoger tu lenguaje de desarrollo, de los cuales Visual C# y Visual Basic .NET son los más comunes.
Y por ahí es común que la raza se ande peleando por tal o cual es mejor. La verdad es que, a excepción de uno que otro elemento oscuro ambos lenguajes son equivalentes.
La recomendación que yo, y muchas personas hacen es concentrarse en los conceptos, ya que si entiendes qué es un tipo, qué es una clase, herencia y todas esas cosas, pues la sintaxis de un lenguaje en particular es irrelevante.
En mi humilde opinión, me gusta más Visual Basic para aprender, ya que es más verbal, mientras que C# es más simbólico. Pero ya después de dominar los conceptos, la verbosidad se convierte en algo casi desagradable. En fin, creo que todo depende de tu estilo de aprendizaje—algunas personas son visuales, otras auditivas—lo que puede determinar tu preferencia.
Pero por otro lado, si manejaste VB 5 o 6 y ves VB .NET, la verdad es que se parecen nomás en nombre. Y aunque se puede argüir que las similitudes entre VB tradicional y VB “.NET” ayudan a dar el brinco, también se puede argumentar que ayudan también a arrastrar prácticas que no te conviene seguir con las herramientas nuevas.
¿Cuál versión del .NET Framework?
El .NET Framework ha pasado ya a la versión 2.0, pero en realidad con la excepción de 2 o 3 cosas—como generics y nullable types, no hay muchos conceptos que hayan cambiado. Así que escribiré de la manera en que se hace para la versión 1.1 del Framework, haciendo hincapié sobre las diferencias con 2.0 sobre la marcha.
siguiente »
