NeoProgramadores - Cómo Convertirse en un Programador
Descarga MP3
Crea tu blog
LaBolsa.com
Página 1 de 15
Revela fotos
Cómo Convertirse en un Programador Versión 2.0 Por J. F. Díaz (
[email protected]) Lic. en Ciencias de la Computación Inspirado en el documento How To Become a Hacker (Cómo convertirse en un hacker) de Eric S. Raymond. Actualizado con la revisión 1.30 del 2 de Marzo del 2005 de dicho documento. Dedicado a mis alumnos pasados, presentes y futuros.
Contenido 1. ¿Por Qué Existe Este Documento? 1.1 ¿Qué es un programador de computadoras? 1.2 Características de los Programadores 2. La Actitud del Programador 2.1 Afuera hay un mundo lleno de problemas que esperan ser resueltos 2.2 Nadie debería reinventar la rueda 2.3 Lo aburrido y lo rutinario es malo 2.4 La creatividad y la originalidad son buenas 2.5 La actitud no es sustituto para la inteligencia 3. Habilidades Básicas en un Programador 3.1 Aprende informática básica 3.2 Aprende cómo usar aplicaciones y el sistema operativo 3.3 Consigue un inglés funcional 3.4 Aprende matemáticas 3.5 Aprende teoría de programación y a desarrollar algoritmos 3.6 Obtén el compilador de un lenguaje y aprende a programar en él 3.7 Aprende otros lenguajes de programación 3.8 Aprende cómo usar la Web y a escribir en HTML 3.9 Obtén conocimientos básicos sobre hardware 4. Estatus en la Comunidad de Programadores 4.1 Escribe buenos programas 4.2 Ayudar a probar y depurar software 4.3 Publicar información útil 4.4 Ayudar a mantener en funcionamiento la infraestructura 4.5 Hacer algo por la comunidad informática 5. La conexión Programador/Nerd 6. Cuestiones de estilo 7. Otros recursos 8. Preguntas frecuentes (PF)
Bajar Juegos
Buscar en la Web
Lecturas Relacionadas Así que quieres ser un Programador... Cómo ser un Programador. Un Resumen Corto, Comprensivo y Personal Iniciándose como un Programador de Computadoras La Programación de Computadoras. ¿Cómo es? Tips for getting hired as a programmer (Tips para ser contratado como programador) Como Programador ¿Por Qué Debo Aprender Inglés?
1. ¿Por Qué Existe Este Documento? 1.1 ¿Qué es un programador de computadoras? 1.2 Características de los Programadores En mi labor como docente de Informática a diario tengo que lidiar con una dolorosa realidad: los estudiantes de las carreras relacionadas con esta ciencia con frecuencia no cuentan con una base sólida de conocimientos sobre aspectos claves que les ayuden a convertirse en buenos profesionales. Los estudiantes de cursos de programación, en particular, carecen además de una guía confiable que les señale la ruta a seguir para dominar un Arte tan fascinante pero a la vez tan complejo como es la programación de computadoras. Aunque pueden mencionarse diversos factores que contribuyen a este problema tan arraigado en la actual generación de informáticos de nuestros países en desarrollo, entre los que podemos mencionar el económico, el cultural y el académico, no es ése el objetivo primordial de este documento. Su objetivo principal es delinear lo que a mi entender son los requisitos fundamentales para llegar a ser un buen programador. Antes de iniciar su redacción, a finales de 1998, noté que habían pocos documentos en la
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 2 de 15
Web que dieran una respuesta aceptable a esta cuestión vital. Los pocos que encontré eran muy superficiales o demasiado profundos como para que un principiantes pudiera usarlos en su provecho --una lista de ellos se encuentra al final de este escrito. Pero cuando descubrí el documento de Eric (cuya versión en español está aquí), además de conocer de la existencia de estos enigmáticos seres del ciberespacio, me di cuenta de la gran similaridad (salvando distancias, por supuesto) entre ellos y los programadores. De hecho, los hackers informáticos son ante todo programadores pero con mayores y más profundos conocimientos sobre la manera en que funcionan las computadoras y todo lo relacionado a ellas, lo que los hace misteriosos y admirables a la vez. Al leer ese documento aprendí más acerca de la personalidad, conocimientos y habilidades que los hackers (y los programadores) debían poseer. Era todo un mundo que se abría a mis ojos, por lo que decidí escribir el que tienes ante ti, una especie de ensayo que tratara de reflejar con precisión lo que se necesitaba para ser un programador, desde una óptica docente y práctica. No pretende ser la última palabra al respecto sino más bien una opinión muy personal. Si no te gusta lo que leerás aquí, puedes escribir el tuyo propio. Si estás leyendo una versión impresa o fuera de línea de este documento, la versión más actual se encuentra en http://www.galeon.com/neoprogramadores/proghow2.htm. Hay una lista de Preguntas Frecuentes al final de este documento. Por favor, léelas (dos veces) antes de enviarme un e-mail con preguntas sobre el mismo.
1.1 ¿Qué es un programador de computadoras? Existen muchas definiciones para los programadores de computadoras, la mayoría de las cuales tienen que ver con conocimientos técnicos para diseñar, escribir, probar y documentar programas de software orientados a resolver problemas usando un lenguaje de programación y una computadora como herramientas. Pero además, él o ella poseen la capacidad de resolver problemas y se deleitan al buscar soluciones particulares y toman como reto o juego intelectual el hacerlo. Explotan al máximo las capacidades de las computadoras, convirtiéndose en agentes de cambio en sus ambientes de trabajo al automatizar tareas manuales, repetitivas, tediosas, lentas o complejas. Si quieres convertirse en un programador pregúntate si te identificas con lo que mencionan esas definiciones y si puedes cultivar o posees ya esas actitudes, y si realmente quieres convertirse en uno. Los programadores forman una comunidad cuya historia se puede rastrear décadas atrás, hasta las primeras computadoras y los primigenios experimentos de automatización de tareas, y han estado presentes en todas las actividades vinculadas con la computadoras y la automatización de procesos. Ellos hicieron de la computación lo que es en la actualidad, inclusive Internet. Los programadores hacen andar las infraestructuras organizacionales al utilizar la informática como medio para alcanzar sus objetivos. Si quieres ser parte de esta comunidad, si deseas convertirse en un programador, entonces sigue leyendo. La mentalidad de programador no está confinada al software de computadoras. Hay personas que aplican la actitud de programador a otras cosas, como electrónica o música --de hecho, puedes encontrarla en los más altos niveles de cualquier ciencia o arte, y se les reconoce como "programadores" también por el nivel de dominio que tienen en su campo de trabajo. Muchos sostienen que la naturaleza del programador es en realidad independiente del medio particular en el cual éste trabaja. Pero en el resto de este documento nos enfocaremos en las habilidades y actitudes de los programadores de software, y en las características y conocimientos de esta comunidad. Si deseas ser un programador, termina de leer este documento. Si no aceptas el reto o no tiene interés en aprender en crear software, sólo utilizarlo, inscríbete en algunos cursos o lee unos cuantos manuales para aprender a usar ordenadores, pero prepárate para soportar la dura realidad cuando después de un tiempo y mucho esfuerzo en aprender aplicaciones "enlatados" descubras las limitaciones que ellas imponen para realizar tareas que impliquen acciones que no están incluidas en sus menúes.
1.2 Características de los Programadores En la programación, el programador es el elemento más importante para la obtención de la solución correcta y satisfactoria de los problemas que se desean resolver mediante computadoras. Es el ingrediente catalizador y determinante, cuyo esfuerzo es más importante que el conjunto de herramientas y equipos que se empleen. El éxito de esta empresa depende en gran medida de un conjunto de características propias del
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 3 de 15
programador, las cuales, entre más desarrolladas y completas se posean, mejor será la solución automatizada que se obtenga. Estas características distinguen a los programadores del resto de usuarios de computadoras y de muchas otras clases de personas. Entre las características más importantes de los programadores podemos mencionar:
Capacidad analítica para comprender los problemas que se le planteen. Lógica y buen sentido común. Capacidad de observación. Espíritu autodidacta e investigativo. Habilidad para estructurar una serie de pasos que conduzcan a la solución de los problemas tomando en cuenta las capacidades y limitantes de la computadora.
Podemos mencionar además de las anteriores otras características adicionales igualmente importantes que un programador debe poseer, tales como la constancia, la dedicación, la disciplina y el deseo de superación.
2. La Actitud del Programador 2.1 Afuera hay un mundo lleno de problemas que esperan ser resueltos 2.2 Nadie debería reinventar la rueda 2.3 Lo aburrido y lo rutinario es malo 2.4 La creatividad y la originalidad son buenas 2.5 La actitud no es sustituto para la inteligencia Los programadores resuelven problemas y construyen cosas, y creen en el uso de la computadora como herramienta y medio para deshacerse de los formas arcaicas de trabajo. Para ser un programador, deberás comportarse como si tuvieras esta clase de actitud en tu interior. Y para comportarse como si tuvieras esta actitud, debes realmente creer en dicha actitud. Pero si piensas que cultivar las actitudes de programador como una forma de ganar aceptación en la sociedad, malinterpretas el tema. Convertirte en la clase de persona que cree en esas cosas es importante para ayudarte a ti -- para ayudarte a aprender y mantenerte motivado. Como en las artes creativas, el modo más efectivo de transformarse en un maestro es imitar la mentalidad de los maestros -- no sólo intelectualmente, sino emocionalmente tan bien. Por tanto, si quieres ser un programador, repite las siguientes cosas hasta que lo creas:
2.1 Afuera hay un mundo lleno de problemas que esperan ser resueltos Ser un programador es muy divertido, pero es una clase de diversión que requiere bastante esfuerzo. El esfuerzo requiere motivación. Los atletas exitosos obtienen su motivación a partir una clase de placer físico que surge de trabajar su cuerpo, al forzarse a sí mismos más allá de sus propios límites físicos. De manera similar, para ser un programador deberás sentir un estremecimiento de tipo primitivo cuando estés frente a un problema, o la resolver uno con la ayuda de la computadora, afinando tus habilidades, y ejercitando tu inteligencia. Si no eres la clase de persona que siente naturalmente las cosas de esta manera, necesitarás aprender a experimentarlas a fin de lograr ser un programador. De otra manera, encontrarás que tu energía de programación será absorbida por otras distracciones como calificaciones, dinero y/o aprobación social. (También deberás desarrollar cierta clase de fe en tu propia capacidad de aprendizaje -la creencia de que aún cuando puedas no saber todo lo que se necesita para resolver un problema, si investigas un poco e intentas una primera solución, tendrás la base suficiente para aprender de tus errores y hacer una versión mejor de tu solución, o podrás enfrentarte a otros problemas semejantes, adquiriendo así más experiencia y conocimientos.)
2.2 Nadie debería reinventar la rueda Los cerebros creativos son un recurso valioso y limitado. No deberían desperdiciarse
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 4 de 15
reinventando la rueda cuando hay tantos y tan fascinantes problemas nuevos esperando ahí afuera. Para comportarse como programador, debes creer que el tiempo para pensar de otros programadores es precioso -- tanto que es casi una obligación moral para ti compartir información con ellos o ayudarles a resolver problemas. Deberás resolver los problemas y luego exponer la solución o implementarla en la práctica de manera que los demás se beneficien y los otros programadores puedan resolver nuevos problemas, en lugar de enfrentarse perpetuamente con los viejos. Esto significa que no debes ser egoísta con tus conocimientos. Las personas egoístas no desean que los demás se superen... o le superen. (No tienes que pensar que estás obligado a regalar todo tu producto creativo. Los programadores que lo hacen son los que obtienen más respeto de los demás, incluyendo los otros programadores. Sin embargo, se considera consistente con los valores de un programador que se regale lo suficiente como para ayudar o enseñar a otros, y al mismo tiempo ganar dinero con tu trabajo. Incluso pueden utilizarse las habilidades de programador para enriquecerse, siempre que no olvides que eres un programador y que te debes a tu comunidad.)
2.3 Lo aburrido y lo rutinario es malo Los programadores (y las personas creativas en general) nunca debieran ser sometidas a trabajos rutinarios, porque cuando esto sucede significa que no están haciendo lo único que pueden hacer: resolver problemas. Este desperdicio de talento daña a todo el mundo. Por lo tanto, las tareas rutinarias, repetitivas y aburridas no solo son displacenteras, sino intrínsecamente malas. Para comportarte como programador, debes creer en esto lo suficiente como para sentirte obligado a automatizar aquellas tareas (o partes de ellas) aburridas o rutinarias lo más que se pueda, no solamente para tu beneficio, sino para el de todos los demás, especialmente el de otros programadores. (Existe una aparente excepción a esta regla. Los programadores hacen cosas a veces que pueden parecer repetitivas o aburridas pero como ejercicio para lograr claridad mental, o para obtener cierta habilidad, cierto conocimiento o cierta clase de experiencia que no podría adquirirse de otro modo, como el realizar repetitivas pruebas de un programa para depurarlo de errores. Pero aunque esto es una elección, ninguna persona pensante debiera ser forzada a hacer cosas que le aburra.)
2.4 La creatividad y la originalidad son buenas Los programadores son naturalmente creativos, inteligentes, prácticos, y a menudo originales. Mezclan sus ideas con métodos y procedimientos que les ayudan a hacer su trabajo, pero gustan de hacer las cosas a su modo usando su creatividad y conocimientos y experiencias propias y ajenas. Cualquiera que les pueda limitar su creatividad y libertad al programar, o forzarles a cambiar su manera de pensar y de resolver problemas, puede desmotivarlos y evitar que sean eficientes -- y, debido a la manera en la que funcionan las mentes arcaicas, encontrarán alguna razón espantosamente estúpida para hacerlo. Por eso, las formas de trabajo anticuadas deben ser combatidas donde sea que se las encuentre con ideas y tecnología, exponiendo las razones que consideres apropiadas para hacer más eficiente el trabajo. Si se las deja te asfixiará, tanto a ti como a los otros programadores y a toda la gente creativa en general, impidiéndoles implementar sus ideas y soluciones propias y novedosas. (Esto no es lo mismo que combatir la autoridad, ni dejar de seguir procedimientos de trabajo. La gente se salva por seguir procedimientos de seguridad, los niños necesitan guía y los criminales restricciones. Un programador debe aceptar la autoridad de su jefe o superior, así como las normas de trabajo existentes, apegarse a ellas y aún tener espacio suficiente para desplegar su creatividad e implementar sus ideas. Éste es un pacto tácito que beneficiará a ambas partes, un acuerdo conciente; la clase de sumisión que desean los arcaicos no está en oferta. Así que para comportarse como programador, deberás luchar mediante el diálogo contra quienes utilizan su posición y poder para obligar a los demás a hacer las cosas de una forma que restrinja la creatividad, la libertad y las ideas inteligentes que mejoren los métodos de trabajo. Y deberás estar preparado para actuar en consecuencia... o te quitarán tu propia forma de hacer las cosas y te harán realmente infeliz.)
2.5 La actitud no es sustituto para la inteligencia
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 5 de 15
Para ser un programador, deberás desarrollar algunas de esas actitudes. Pero copiar solamente una actitud no te transformará en programador, como tampoco te puede transformar en un atleta campeón o en una estrella de rock. Para transformarse en programador necesitarás inteligencia, estudio, disciplina, práctica, dedicación y trabajo duro. Todas estas son cualidades de un programador. Por lo tanto, debes aprender a desconfiar de la actitud y respetar la inteligencia de todo tipo. A ningún programador le gusta perder el tiempo con quienes adoptan la pose de programadores, sino que veneran la inteligencia y la competencia consigo mismo y con los demás al programar para superarse y tratar de hacer cada vez mejor y más eficientemente las cosas. Si lo deseas, puedes competir en cualquier ámbito y contra otros, y eso está bien. En especial, la competencia en habilidades exigentes que pocos pueden dominar como la programación es mejor, y la competencia en habilidades exigentes y tareas que involucran agudeza mental, experiencia y concentración es especialmente mejor. Si respetas la inteligencia y la competencia, disfrutarás desarrollándolas en ti y contigo mismo. El trabajo pesado y la dedicación se transformarán en una especie de juego intenso, y no una rutina. Esa actitud es vital para transformarte en un programador.
3. Habilidades Básicas en un Programador 3.1 Aprende informática básica 3.2 Aprende cómo usar aplicaciones y el sistema operativo 3.3 Consigue un inglés funcional 3.4 Aprende matemáticas 3.5 Aprende teoría de programación y a desarrollar algoritmos 3.6 Obtén el compilador de un lenguaje y aprende a programar en él 3.7 Aprende otros lenguajes de programación 3.8 Aprende cómo usar la Web y a escribir en HTML 3.9 Obtén conocimientos básicos sobre hardware La actitud del programador es vital, pero las habilidades o son más. Tener la actitud no es lo mismo que ser competente, y existe un cierto conjunto de herramientas básicas que debes dominar antes de convertirte en programador o que cualquiera pueda llamarte así. Este conjunto de herramientas cambia lentamente con el tiempo a medida que la tecnología crea nuevas habilidades y descarta otras por obsoletas. Por ejemplo, antes se programaba en COBOL, Clipper y Ensamblador, y no se hablaba de C++, Visual Basic ni de Java hasta hace poco. Pero hasta inicios del 2005, es claro que debe incluirse lo siguiente:
3.1 Aprende informática básica Aunque parezca obvio mencionarlo, debes conocer y dominar conceptos básicos de informática. Si no conoces las partes del ordenador, cómo funciona, sus capacidades y limitaciones físicas y lo que puedes y no puedes (o debes) hacer con él, no deberías empezar con la programación. Si no se conocen los conceptos de ordenador, hardware, software y su clasificaciones, datos, información, sus unidades de medida y los diferentes medios de almacenamiento de datos entre otros conceptos, es muy difícil comprender en qué se fundamenta la programación. Es como querer conducir un auto sin haber tomado un curso básico de manejo. Debería exigirse en las carreras y cursos relacionados con la computación un nivel de aprendizaje bastante completo de Informática Básica antes de permitir a los estudiantes promover a cursos superiores. Un mínimo de 90% de la nota necesaria para aprobar la asignatura sería una cifra aceptable dado que estos conocimientos son de suma importancia para los profesionales de hoy en día. Aunque 90 puede parecer un porcentaje alto, te sorprenderías por el número de veces que he interrumpido una clase de programación debido a que los estudiantes no recuerdan con claridad la diferencia entre conceptos fundamentales como kilobyte y megabyte, hardware y software o entre RAM y ROM. Si no has tomado un curso formal de Informática o estás débil en esta materia te sugiero que leas un buen libro sobre introducción a la informática, o busques en la Red un buen tutorial sobre el tema. Si después deseas leer un libro que relacione la informática con la programación, léete éste. Se incluye además en este apartado el saber usar el teclado. No pasarás gran parte del tiempo codificando (generalmente es un 10-15% del tiempo total de programación) pero
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 6 de 15
sí escribiendo documentación, tanto interna (en el código) como externa (manuales de usuario por ejemplo.) Aunque no se necesita ser rápido con el teclado, al menos debes poder tipiar de 15 a 20 palabras por minuto.
3.2 Aprende cómo usar aplicaciones y el sistema operativo Esta es otra habilidad importante de los programadores. El saber emplear el sistema operativo y las aplicaciones de oficina es de muchísima utilidad. Los programadores dominan ampliamente estos tipos de software y los utilizan como herramientas en su trabajo y como componentes dentro de sus soluciones. Como parte de tu aprendizaje de la programación debes conocer las facilidades y limitaciones del software básico de la PC para explotar al máximo sus capacidades en tu propio beneficio y de los demás. Si no sabes cómo usarlo te verás seriamente limitado en tu aprendizaje de la programación y en la creación de soluciones. Aprende cómo usar el software base. En el caso de las PC compatibles con IBM este software es el Windows y las aplicaciones de la suite Microsoft Office por ser los más ampliamente difundidos en esta plataforma. Si tu plataforma es otra, debes aprender sus equivalentes. Si ya dominas estos programas tienes mucho camino andado, si no toma un curso express de operador o sé autodidacta estudiando por tu cuenta libros y manuales que puedes descargar gratis de la Web. Esto es más económico y mejor pues aprenderás a tu ritmo, en tu tiempo y te permitirá ir más allá de los conocimientos básicos que enseñan en los lugares de pago. Estudia primero sobre tu sistema operativo para aprender cómo aprovechar al máximo sus capacidades y las del ordenador, en particular cómo administrar archivos, cómo ejecutar programas y utilizar los periféricos; debes además conocer cómo utilizar sus herramientas (utilerías de discos, editores de texto, calculadoras, programas de gráficos, administradores de impresión, etc.) y las facilidades que ofrece (multitarea, modos gráficos y modo texto, uso de ventanas, etc.) Estos conocimientos son muy importantes. No los tomes a la ligera pues te servirán durante toda tu vida como programador y usuario de computadoras. Continúa después con la suite ofimática que tengas instalada. Si es Office, debes dominar Word, Excel y Access cuyas funcionalidades son de suma utilidad en cualquier entorno. En especial aprende a importar/exportar datos de y hacia ellos, cómo pasar información entre estas aplicaciones mediante procedimientos de copiar/cortar y pegar, y a recuperar de o guardar en los diferentes formatos que estas aplicaciones soportan. En especial debes aprender Access puesto que permite crear y administrar bases de datos, y extraer información rápida y eficientemente en forma de reportes y consultas. Debes conocerlo lo suficiente de él como para resolver problemas de administración de información y automatizar operaciones rutinarias, lentas o aburridas como el registro y procesamiento de datos. El dominio de Access representa un excelente punto de partida en tu aprendizaje de la programación, además de que a largo plazo te será de utilidad: sus bases de datos son necesarias para la programación en Visual Basic y pueden ser accedidas usando otros lenguajes de programación como el SQL. Además del software antes mencionado debes conocer el uso de aplicaciones antivirus, paquetes de utilerías (como Norton SystemWorks), software de grabación de CDs, uso práctico de redes y de todas aquellas aplicaciones que puedan serte de utilidad, como el Acrobat Reader y las utilerías varias.
3.3 Consigue un inglés funcional La mayoría de los lenguajes de programación incorporan en su sintaxis una gran cantidad de palabras inglesas. Más de la mitad del contenido de la Red se encuentra también en este idioma. Un gran porcentaje de documentos y artículos técnicos, libros de texto, la ayuda y la interfaz de muchos programas no tienen una versión traducida al español, y una gran cantidad de foros técnicos, páginas web y recursos de la Internet en general usan o tienen el inglés como idioma de trabajo. Y es que el inglés, aparte de ser la lengua oficial de grandes potencias en informática como Estados Unidos, Inglaterra y Canadá donde se habla en un alto porcentaje, tiene el vocabulario técnico más rico que cualquier otro idioma. Esto tiene implicancias para nosotros, los de habla no inglesa: la traducción de libros técnicos y de interfaces de programas originalmente escritos/creados en inglés son a menudo insatisfactorios por la falta de términos equivalentes en nuestra lengua (si se llegan a realizar). Por esas y muchas otras razones que tienen que ver con tu preparación y tu futuro como profesional, debes poseer al menos un inglés básico funcional, con un buen dominio del vocabulario técnico informático. Por lo menos debes saber lo suficiente como para
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 7 de 15
poderlo comprender y expresarte en él apropiadamente. Obtener un nivel intermedio o superior en un buen curso de inglés servirá, y si lo completas es mejor ya que con un inglés más fluido podrás realizar mejores consultas en la Web, expresar con más claridad tus dudas en los foros y traducir mejor los manuales técnicos. Quizá pienses que un buen programa traductor y/o un diccionario o glosario técnico (electrónico o de papel) te ayudarán a resolver cualquier problema relacionado con el inglés al utilizarlo como herramienta de apoyo durante tu aprendizaje o trabajo de programación. Y tienes razón. Esas herramientas son muy útiles y pueden convertirse en tus grandes aliados. Pero no debes atenerte a ellas puesto que el tiempo que se invierte en comprender o traducir un mensaje, un documento, una opción de menú o un procedimiento de un manual puede hacer la diferencia entre un programador bueno y uno mediocre. Personalmente el conocer inglés me ha ayudado mucho en mi trabajo, la docencia y mis proyectos personales. Francamente no sé si hubiese podido realizar muchas de esas cosas sabiendo únicamente mi idioma natal, el español. Creo firmemente en la importancia del inglés en el proceso de conversión que persigues para llegar a ser un programador. De otro modo no lo hubiese incluido en este escrito. He escrito un artículo que aborda más ampliamente este tópico es este. Quizá te interese leerlo.
3.4 Aprende matemáticas No necesitas ser un genio en matemáticas para ser un programador. De hecho, esto es un tabú para quienes desean aprender a programar pero temen toparse con demasiados números y la necesidad de grandes conocimientos sobre esta ciencia. Sí, es importante conocer matemática para aprender a programar, pero no significa que debas conocer matemática avanzada como el cálculo, el análisis, las series de Fourier o la matemática cuántica. A menos que estés interesado en los gráficos, los videojuegos y las aplicaciones científicas donde el tener habilidades especiales con los números definitivamente es muy importante, en general lo único que necesitas saber es aritmética básica, álgebra, geometría y lógica y teoría de conjuntos. Lo importante es que debes sentirte cómodo con los conceptos, las operaciones básicas, las fórmulas y el razonamiento deductivo que implican estas materias. Eso es todo. El dominio y aplicación de estos conocimientos a la programación es casi automática y decisiva en tu proceso de transformación en programador. Generalmente los alumnos que son buenos con las matemáticas sienten fácil el aprendizaje de la programación ya que el tipo de razonamiento emlpeado para resolver problemas es muy similar al empleado con los números. De hecho, los mejores alumnos programadores que he tenido eran buenos con las matemáticas. Pero esto no es un dogma. Muchos se han convertido en excelentes programadores sin ser hábiles matemáticos, en entornos que no requieren grandes habilidades con los números como las bases de datos o la programación de páginas web. Pero el estar familiarizados con las fórmulas, saber cómo traducirlas a la sintaxis de algún lenguaje de programación, tener lógica y poder jugar con los números y las incógnitas usando el álgebra son elementos muy importantes para cualquier programador.
3.5 Aprende teoría de programación y a desarrollar algoritmos Aprender a programar es, por supuesto, la habilidad fundamental del programador. Pero aprender a programar no significa únicamente conocer lenguajes de programación, sino que antes de eso se debe conocer y dominar conceptos teóricos fundamentales de la programación tales como variables, constantes, tipos de datos, algoritmo, sentencias de control, flujogramación, programa, lenguajes de programación, estructuras de datos, compilación, traducción, además de tópicos relacionados tales como el ciclo de vida de los programas, estrategias de diseño y métodos de prueba de programas. El dominio de la teoría es fundamental en cualquier campo, más aún si ese campo implica mucha teoría aplicada como lo es el de la programación. Pero además de ello, para aprender a programar es sumamente importante el saber estructurar soluciones a problemas mediante el diseño y la escritura de algoritmos. Esta es una habilidad clave para el aprendizaje de la programación. Si no eres capaz de estructurar una secuencia lógica de acciones que constituya una propuesta de solución a un problema planteado, no deberías empezar el estudio de ningún lenguaje de programación. La esencia de la programación radica en esta habilidad y aunque conozcas la sintaxis y la semántica de decenas de lenguajes de programación no podrás desarrollar soluciones a problemas,
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 8 de 15
menos que sean representen alguna utilidad práctica o que resulten interesantes para otros programadores. Si no tienes bien afianzados estos conocimientos, el siguiente libro puede serte de extrema utilidad: Fundamentos de Informática y Programación (también para descarga completa en formato ZIP); este otro libro, Fundamentos de Informática y Programación Científica - Resolución en C y Matlab en formato PDF puede servirte también si ya tienes algo de experiencia. Doy por sentado de aquí en adelante que conoces suficiente teoría de programación, que ya sabes estructurar algoritmos y que tienes acceso a un ordenador. Pasemos a la acción.
3.6 Obtén el compilador de un lenguaje y aprende a programar en él El paso más importante que cualquier novato puede dar, camino a adquirir las habilidades de un programador es obtener una copia de un compilador de algún lenguaje de programación, instalarlo en una PC y aprender a programar en él. Te recomiendo empezar con Python. Está limpiamente diseñado, bien documentado, es gratuito y relativamente sencillo para los principiantes. A pesar de lo anterior no deja de ser un lenguaje poderoso, flexible y apropiado para grandes proyectos. Pascal es también un buen lenguaje para aprender a programar. Casi tan fácil como Python, se suele utilizar también en la enseñanza. Existe mucha bibliografía sobre Pascal en las librerías y la Web por lo que no será un problema para ti obtener documentación sobre este popular lenguaje. Tanto Python como Pascal son muy simples, didácticos, fáciles de aprender, e implementan los conceptos más importantes de la programación. Desde este sitio puedes descargar versiones de sus compiladores aparte de recursos adicionales como manuales y guías de instalación para ellos. Aunque existen muchos otros lenguajes son pocos los que cumplen los requisitos que Python y Pascal poseen. No intentes iniciar tu aprendizaje de la programación con lenguajes visuales (léase Visual Basic, Visual FoxPro, Visual C/C++) puesto que distraen mucho con los aspectos relacioandos con el diseño y dejan en segundo plano la programación, a la vez que te mal acostumbrarás a sus mecanismos de ejecución. Tampoco con lenguajes como COBOL, Clipper ni ensamblador. Aunque COBOL y Clipper aún se usan en entornos empresariales, no son didácticos y enseñan pésimos hábitos de programación; el ensamblador por su parte requiere conocimientos profundos del hardware. Puedes empezar incluso con DBase o uno semejante de la familia Fox anterior a la 3.0, pero cuando trates de aprender lenguajes que requieran declarar explícitamente localidades de almacenamiento como Pascal o C (variables por ejemplo), quizá te extrañe o te incomode. No puedo explicarte en detalle aquí cómo puedes aprender a programar --es una habilidad compleja y depende de las habilidades y capacidades que cada uno posee. Pero puedo adelantarte que los libros y cursos no bastarán, sino además el tener tiempo suficiente para practicar, el hábito de la lectura y un espíritu investigativo (muchos, y tal vez la mayoría de los mejores programadores son verdaderos autodidactas). Te recomiendo además dos cosas que te servirán de mucho y son (a) leer código y (b) escribir código. El código a leer puede ser:
Programas ejemplos de los libros de programación Programas de estudiantes avanzados Demos que traen los compiladores (están en las mismas carpetas donde se instalan sus programas) Programas fuentes de aplicaciones que puedas conseguir legalmente Programas libres (o sea software no comercial, cuyo código fuente puedes obtener en la Internet)
Antes era difícil encontrar código de buena calidad para leer porque habían pocos libros y código fuente disponible de calidad que se pudiera estudiar y con el que se pudiera experimentar. Esta situación ha cambiado dramáticamente: mejores libros, software libre, herramientas de programación gratuita, la Internet, etc. todo disponible con su código fuente y ampliamente disponibles en la actualidad. El aprender a programar es como aprender a escribir bien en lenguaje natural. La mejor manera de aprender es leer algo de las cosas escritas por los maestros, luego escribir algunas cosas por ti mismo, leer mucho más, escribir un poco más... y repetir esto hasta que lo que escribes empiece a mostrar la clase de fuerza y economía que se aprecia en tus modelos.
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 9 de 15
Estudia un lenguaje de programación. Aprende a programar en él. Usa las herramientas que ofrece y los conceptos de programación que implementa. Lee los ejemplos que traen los libros para comprenderlos y practica modificándolos. Comunícate con el sistema operativo mediante sus librerías. Te aseguro que te divertirás, te sumergirás en un caudal de conocimientos de gran magnitud, se te desarrollará la lógica de programación y adquirirás experiencia, hasta que en cierto momento, mirando hacia atrás, te darás cuenta que ya no eres un simple principiante.
3.7 Aprende otros lenguajes de programación No creas que ya eres un programador por el hecho de conocer uno o dos lenguajes. Para ser un verdadero programador debes aprender varios lenguajes más hasta llegar al punto en que puedas aprender uno nuevo en días, relacionando lo que está en el manual con lo que ya sabes de antes. Un beneficio adicional y quizá el mayor, es que aprender a programar en varios lenguajes muy diferentes entre sí te ayudará a pensar en los problemas de programación de una manera general e independiente de los lenguajes. Después que aprendas Python y/o Pascal debes estudiar C, el lenguaje oficial de los sistemas opeeativos tipo Unix y la Internet. C no es un buen lenguaje para iniciar el aprendizaje de la programación con él puesto que emplea una sintaxis muy escueta, lo que lo hace muy propenso a errores que pueden requerir mucho tiempo detectar y eliminar para un principiante. Aunque es un lenguaje muy portátil, flexible, ampliamente utilizado y encima muy eficiente y económico con el uso de los recursos del computador, para llegar a dominarlo se requiere mucho tiempo y conocimientos que sólo pueden adquirirse al aprender a programar en un lenguaje didáctico y sencillo como Python o Pascal. Dominar C te ayudará en tu progreso como programador no solo por sus amplios campos de uso (programación de sistemas operativos, redes, electrónica, aplicaciones y drivers) sino porque su sintaxis es muy similar a la de otros lenguajes de programación importantes como C++, Java y JavaScript. C++ es la versión moderna de C enfocado en la POO (Programación Orientada a Objetos) y es el siguiente lenguaje que debes dominar. La sintaxis de C es comprendida por los compiladores de C++, por lo que la transición hacia este lenguaje es suave. Luego que aprendas C++ te resultará fácil aprender lenguajes visuales como Visual Basic, Delphi o Visual FoxPro dado que estarás familiarizado con el estilo de programación y los conceptos que C++ emplea. Ésta constituye otra fuerte razón para aprenderlo. Otros lenguajes importantes que debes aprender son SQL (Structured Query Languaje, Lenguaje de Consulta Estructurado) y Visual Basic. El primero para aprender a consultar bases de datos por su universalidad y potencia, y el segundo por su popularidad, facilidad y amplia demanda en los entornos empresariales donde se procesan volúmenes de datos; y puedes continuar después con HTML, el lenguaje de la Internet, y Java por la demanda actual que existe de aplicaciones para este entorno. HTML sirve para escribir páginas web y Java para darles dinamismo y hacerlas más interesantes y útiles. Los lenguajes mencionados son los más importantes y comunes en la actualidad, y representan enfoques muy diferentes de la programación. Te educarán de distintas y valiosas maneras pues cada uno de ellos te enseñará a resolver distintos conjuntos de problemas. Además, si puedes programar en ellos fácilmente puedes aprender otros lenguajes similares. Si necesitas documentación sobre estos lenguaje busca algún buen libro para principiantes. Si no puedes conseguir libros, no te preocupes. La web esá repleta de sitios que ofrecen información y excelentes manuales sobre estos y muchos otros lenguajes de programación, lo cual nos lleva elegantemente a nuestro próximo tema...
3.8 Aprende cómo usar la Web y a escribir en HTML La Web representa el mayor depósito de conocimientos de la actualidad y se considera el medio de comunicación del futuro. Aprender a usarla no significa aprender únicamente a manejar un navegador como el Internet Explorer (cualquiera puede hacer eso en una hora) sino que debes aprender a utilizarla como una fuente valiosa de recursos y explotarla al máximo. Hablo de usar todos los servicios y recursos que ella ofrece tales como los motores de búsqueda, los foros, los weblogs, los sitios de descarga de software y noticias, y el correo basado en web (como Yahoo! y Hotmail) entre otros. Este conocimiento debería formar parte de tu cultura informática y de tu proceso de transformación en un auténtico programador. ¿Cómo puede ayudarte la Web a ser un programador? Para empezar está repleta de manuales y tutoriales sobre lenguajes de programación que puedes descargar o imprimir;
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 10 de 15
cientos de foros donde se dan cita miles de programadores para discutir aspectos técnicos sobre lenguajes y programación, así como brindar ayuda a quienes la soliciten; miles de sitios de programas, utilidades y recursos que puedes descargar para ayudarte en tu aprendizaje, tales como compiladores, editores, herramientas, librerías, código fuente, trucos técnicos y procedimientos prácticos sobre casi cualquier cosa relacionada con la programación. En la mayoría de los casos, empero, debes poseer una cuenta de correo electrónico para comunicarte con los demás, suscribirte gratuitamente a sitios web, participar en foros o simplemente utilizarlo para descargar recursos. Pero no todo es así de fácil de conseguir. Muchas veces tendrás que buscarlo diligentemente usando uno o varios motores de búsqueda como Google o Yahoo! que permiten rastrear la Web usando patrones y palabras claves, reportando listas de sitios web en sus resultados. Quizá tengas que intentar varias veces, de diversas formas y con diferentes buscadores para hallar lo que buscas. Sin embargo, los motores de búsqueda actuales son muy eficientes y permiten tener más éxito que hace algunos años. Aprender a usar la Web también implica aprender HTML, el lenguaje de hipertexto y marcas de la Web. Si aún no sabes como programar en HTML, el aprendizaje que implica la escritura de código en este lenguaje de marcas te enseñará algunos de los hábitos mentales que te ayudarán luego con la programación. Si ya sabes Pascal, por ejemplo, verás que el HTML es aún más fácil. Así que aprende HTML hasta el grado de lograr hacer tu propia página personal manualmente, es decir, escribiendo por ti mismo cada instrucción de la misma. Aunque puedes emplear aplicaciones especiales para diseñar y generar páginas web como FrontPage, deberás saber cómo escribir en HTML para llevar a cabo correcciones o incluir elementos y características en tus páginas web que estas aplicaciones no contemplan, como opciones de etiquetas o código Java y JavaScript para darles más vida y dinamismo. Luego de crear una página web puedes publicarla en sitios que ofrecen almacenamiento gratuito como Galeon o GeoCities. Pero no pienses que por tener una página personal estás más cerca de ser un programador. La Web está llena de páginas personales, demasiado cargadas y sin sentido, sólo basura sin contenido -- basura muy vistosa, pero basura al fin. El infierno del HTML y los enlaces que menciona son documentos que deberías leer para evitar caer en este frecuente error. La versión en inglés de este documento está más actualizada y menciona recursos adicionales. Para que valga la pena, tu página debe tener contenido. Debe ser interesante y/o útil para los demás usuarios de la Red (en especial para otros programadores) y no simplemente una demostración de capacidad, un símbolo de estatus o de moda. Debe ser una responsabilidad hacia la comunidad de usuarios de la Red y hacia ti mismo ya que no debes dejarla a la deriva, sin actualizarla frecuentemente con más y mejor información.
3.9 Obtén conocimientos básicos sobre hardware Si piensas que los programadores tienen que ver únicamente con software, te tengo noticias: también deben conocer sobre hardware. Como programador debes aprender sobre aspectos técnicos de tu plataforma particular puesto que es sobre ella en que se ejecutan los programas que creas. No tienes que ser un erudito en la materia, pero al menos debes saber cuáles son los requerimientos técnicos mínimos que necesita tu lenguaje de programación, así como los de tus programas y los de los archivos que ellos procesarán o utilizarán. Por ejemplo, si vas a utilizar Visual FoxPro como tu lenguaje de programación y estás en la plataforma PC, al menos debes saber que este lenguaje sólo puede ejecutarse en máquinas con procesadores 486 o superiores, con al menos 32 MB en RAM y disponer como mínimo de 10 MB en disco duro para su instalación, sin mencionar el espacio extra que necesitarán las bases de datos y los archivos de tus proyectos. Además, dado que es un lenguaje visual requiere como mínimo de un monitor SVGA y un dispositivo apuntador como un mouse para poder interactuar eficientemente con su interfaz, especialmente durante las tareas de diseño de pantallas (formularios), consultas (queries) e informes (reportes). Por otro lado, puesto que la mayoría del software actual en inmenso y difícil de obtener en disquetes de 3 1/2", es posible que necesites un lector de CD para instalar el lenguaje, a menos que poseas una conexión de red u otro mecanismo práctico para poder acceder a sus archivos de instalación. Los requerimientos mencionados en el párrafo anterior son mínimos, lo cual significa que si no cuenta con esos requisitos, Visual FoxPro se ejecutará con dificultades o no lo hará en lo absoluto -- incluso aún con ellos su desempeño será lento. Lo opuesto, es decir, si tu equipo excede esos requerimientos, hará que el lenguaje se desempeñe mejor sobre todo en operaciones de compilación de código, búsqueda de datos, diseño de
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 11 de 15
documentos y ejecución. Este exceso por lo tanto es recomendable, en especial si los programas que vas a desarrollar se utilizarán en entornos de producción empresariales (donde el volumen de datos a manejar suele crecer rápidamente) y no como simples ejercisios académicos de aprendizaje. . Sin embargo, esto no termina aquí. Los requerimientos mínimos para la instalación de un lenguaje varían de versión a versión, de un tipo de lenguaje a otro, así como de un fabricante a otro, por lo que debes adquirir no solo conocimientos sino también experiencia en el uso de los mismos. En la mayoría de los casos esto implica investigación y práctica. Los archivos que acompañan a los lenguajes de programación (README.TXT, LEAME.TXT, README.1ST, etc.) así como la documentación propia de ellos (los libros incluidos en las cajas originales donde empacan los discos de instalación), la Internet y los libros de texto son tus mejores fuentes de información. Además de los requisitos hardware, a menudo existen otros requisitos que son necesarios para la correcta ejecución de un lenguaje o un proyecto de programación. Por ejemplo, Visual Basic requiere de Microsoft Windows y Microsoft Access para funcionar, así como de las librerías DLL apropiadas para poder ejecutarse; Java requiere que se instalen las applets apropiadas y el intérprete adecuado, el que depende casi siempre del sistema operativo; SQL Server se instala y configura empleando recursos de una red local, tales como información sobre servidores, dominios, conectividad, etc. Si eres un principiante, el no saber mucho sobre requisitos técnicos no debería preocuparte. Irás adquiriendo esos conocimientos y esta experiencia de forma gradual y a medida en que los vayas necesitando. No es preciso que lo sepas todo y que lo sepas ya, así que no te desalientes. Al contrario, esta carencia debería ser otro de tus alicientes para complementar tu formación como programador, puesto que entre mayores conocimientos y experiencia poseas serás considerado mucho más valioso como programador.
4. Estatus en la Comunidad de Programadores 4.1 Escribe buenos programas 4.2 Ayudar a probar y depurar software 4.3 Publicar información útil 4.4 Ayudar a mantener en funcionamiento la infraestructura 4.5 Hacer algo por la comunidad informática De manera similar a muchas otras comunidades, aquí es importante la reputación. Estás intentando resolver problemas interesantes, pero cuán interesantes son y cuán buenas son las soluciones que encuentres, es algo que sólo tus iguales o superiores técnicamente hablando serán capaces de juzgar. De acuerdo a esto, cuando juegas el juego de programador, aprendes a puntuarse principalmente en función de tus soluciones y de la opinión que otros programadores tienen sobre tus habilidades (éste es el motivo por el cual no puedes ser un programador de verdad hasta que tengas experiencia y otros programadores te denominen así consistentemente). Este hecho está empañado por la imagen de la programación como un trabajo solitario por lo absorbente que es, ya que exige mucha concentración; también por un tabú social de la gente que ve a los relacionados con las computadoras como nerds (si bien en la actualidad es menor, aún es fuerte) que impide que se valore social, laboral y económicamente de manera adecuada nuestro trabajo, en su real magnitud. Tu ganas estatus y reputación no mediante la dominación de las otras personas, por lo bello que eres ni por tener cosas que los demás desean, sino por crear cosas, resolver problemas y proveer soluciones efectivas. Específicamente, al crear programas, producir ideas y obtener resultados por tus habilidades como programador. No se permite que el programador aumente su reputación de manera ilegal o inmoral, u obtenga validación externa de fuentes no calificadas como elementos involucrados en la propia motivación. Existen básicamente cinco clases de cosas que puedes hacer para obtener el respeto de los demás, especialmente de otros programadores:
4.1 Escribe buenos programas Lo primero (y más importante) es escribir buenos programas, artefactos que los demás opinen son útiles, interesantes, importantes o divertidos, y dar a conocer y/o implementar tus trabajos y soluciones. Si lo deseas, y es muy meritorio, puedes donar el código fuente del programa a la comunidad de programadores para que sean estudiados, ampliados,
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 12 de 15
probados y/o utilizados. Esto es especialmente válido e importante en medios académicos, pero cuida que sean donados para que otros puedan estudiarlos y aprender de ellos. Si regalas tus programas, procura que sea lo suficientemente público como para evitar el robo de tu trabajo y el fraude académico: que no usen tus ideas y trabajos para obtener créditos o calificaciones inmerecidas. No le hagas la vida fácil a los perezosos y parásitos, más bien les harás un gran daño. Los más reverenciados semidioses de la programación no son las personas que saben más lenguajes de programación (aunque ello es meritorio) sino las que han escrito programas muy útiles, de gran magnitud, con grandes capacidades que satisfacen necesidades de largo alcance, y los dan a conocer o los hacen de dominio público, de tal manera que cualquiera pueda utilizarlos, ya sea como herramienta o como medio de aprendizaje.
4.2 Ayudar a probar y depurar software También son reconocidas aquellas personas que depuran los errores del software. Como programadores inevitablemente pasaremos la mayoría de nuestro tiempo de desarrollo en la fase de depuración. Éste es el motivo por el cual los desarrolladores de software libre, comercial o investigativo, piensan que un buen probador-beta (uno que sabe cómo describir claramente los síntomas de un bug o error, que puede localizar correctamente los problemas, que tolera los errores en una entrega apurada, y que está dispuesto a aplicar unas cuantas rutinas sencillas de diagnóstico) vale su peso en oro. Aún contando con uno solo de estos probadores el proceso de depuración puede pasar de ser una prolongada pesadilla que lo deja a uno exhausto, a ser sólo una saludable molestia. Si eres un principiante, trata de encontrar un programa en desarrollo, ya sea de un amigo, un profesor o un compañero de trabajo en el cual estés interesado (o no), y se un buen probador beta. Hay una progresión natural a partir de ayudar a probar programas, luego ayudar a depurarlos, y más adelante ayudar a modificarlos. Aprenderás mucho de esta forma, y la gente, como agradecimiento, te ayudará de alguna forma, desde prestarte documentación, computadoras, darte acceso a redes, regalarte software y apoyarte en tus proyectos, hasta ayudarte con alguna beca o a encontrar trabajo.
4.3 Publicar información útil Otra buena cosa que puedes hacer es recolectar y filtrar información útil e interesante (algoritmos, código fuente de programas, problemas de programación, etc.), publicar documentos técnicos como PF (Preguntas Frecuentes o FAQ, Frecuently Asked Questions), escribir o traducir artículos sobre programación o sobre algún lenguaje en particular, y construir páginas Web para ponerlos a disposición de los demás usando servicios gratuitos como Galeon y Geocities. Sin embargo, a menos que el contenido de tu sitio sea original o no exista en tu idioma, te sugiero que busques sitios web que acepten colaboraciones tales como La Web del Programador. De esta manera evitarás disgregar aún más la información en la Red y mejorarás con tu aporte los sitios existentes. Puedes también publicar tu información en revistas o periódicos, distribuirla mediante fotocopias, discos, e-mail u otro medio, siempre y cuando no violes derechos de autor y no sea ilegal. La gente que hace alguna de estas cosas, como mantener las PF técnicas más importantes, centralizar enlaces a recursos de la Web o comparten información valiosa gozan de casi tanto respeto como los programadores de sistemas y aplicaciones.
4.4 Ayudar a mantener en funcionamiento la infraestructura El desarrollo y la automatización de las empresas (inclusive de la Internet) funciona gracias al trabajo arduo de los programadores y las personas involucradas, tales como los operadores, depuradores, administradores de sistemas, etc. Existe una gran cantidad de trabajo necesario pero sin glamour que debe hacerse para que esto siga marchando -depurar programas, mantener sitios web que archivan grandes cantidades de software, instalar físicamente redes y equipos, desarrollar documentación para programas y redactar estándares técnicos. La gente que desarrolla estas actividades goza de mucho respeto, porque todos saben que esos trabajos son grandes consumidores de tiempo y no tan divertidos como meterse con el código. Los que lo realizan demuestran su dedicación.
4.5 Hacer algo por la comunidad informática
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 13 de 15
Finalmente, puedes servir, ayudar y propagar la cultura informática (por ejemplo, haciendo alguna de las cosas que menciono en este texto, o escribiendo un texto acerca de como convertirse en un programador :)). Esto no es algo en lo cual estarás en posición de hacer hasta que tengas experiencia o seas conocido en el ambiente por al menos una de las primeras cuatro cosas. La comunidad de programadores no tiene líderes, exactamente, pero tiene héroes. Cuando hayas estado en las trincheras tiempo suficiente, podrás crecer y transformarse en uno de ellos. Pero ten cuidado: los programadores y el resto de gente detestan el ego ruidoso en sus homólogos, inclusive entre los principiantes, así que la búsqueda visible de esa clase de fama es peligrosa. En lugar de esforzarte por ella, debes colocarte en una posición tal que ella caiga sobre ti: haz buenos programas y se un buen programador. Luego, compórtate modestamente y con gracia con tu estatus adquirido.
5. La conexión Programador/Nerd Contrariamente al mito popular, no es necesario ser un nerd para ser programador. Ayuda, sin embargo, y muchos programadores son nerds. Al ser un marginado social, el nerd puede mantenerse concentrado en las cosas realmente importantes, como pensar y programar. Por esta razón o quizá por moda, muchos programadores han adoptado la etiqueta 'nerd' e incluso lo utilizan como insignia de orgullo. Es su forma de declarar su propia inteligencia frente a los demás. Si puedes vértelas con la concentración suficiente en las tareas de programación para ser bueno en ello, y encima disfrutar de una vida, está bien. Es muchísimo más fácil ahora que antes; la gente ve con mejores ojos a los tecno-nerds en la actualidad. Hay además un número creciente de personas que se dan cuenta que los programadores son un material de alta calidad para novio/novia/marido/esposa por su alto nivel de IQ. Si te sientes atraído por la actividad de la programación porque no tienes una vida personal, está bien también. Al menos no tendrás problemas de concentración. A lo mejor más adelante puedes conseguir una vida como la demás gente.
6. Cuestiones de estilo De nuevo, para ser un programador, debes desarrollar la mentalidad del programador. Existen algunas cosas que puedes hacer cuando estés lejos de una computadora que te pueden ayudar. Estas cosas no son sustituto para la actividad propia de programar (nada lo es) pero muchos programadores las realizan, y sienten que de alguna manera se conectan con la esencia de la actividad de la programación.
Lee libros de programación y/o revistas de computación. Ve a las presentaciones de tecnología sobre computación e informática (es un buen método para encontrarse con programadores, proto-programadores y gente del ambiente y estar al tanto de la tecnología) Practica deportes. (La disciplina mental se parece en ambos casos.) Desarrolla un oído analítico para la música. Aprenda a apreciar música de clases peculiares. Aprenda a tocar correctamente alguna clase de instrumento musical, o a cantar. Desarrolla inclinación por los juegos de análisis, los dobles sentidos y los juegos de palabras. Aprende a escribir correctamente en tu lengua nativa. (Una cantidad sorprendente de programadores, incluyendo a los mejores que conozco, son capaces escritores y buenos redactores, no son solo técnicos en cosas de computación.)
Cuanto más de estas cosas hagas, es más probable que poseas material natural para ser un programador. Finalmente, unas pocas cosas que no debes hacer.
No uses un nombre de usuario grandioso y bobo en Internet. No seas egoísta con tus conocimientos. No te metas en las discusiones airadas de computación y programación (ni de ninguna otra cosa) en ningún lado, en especial la Internet. No te autodenomines 'cyberpunk' ni 'hacker' ni adoptes título llamativos o importantes para aparentar estatus, ni desperdicies tu tiempo en nadie que lo haga.
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 14 de 15
La única reputación que ganarás con esas costumbres es la de un engreído, egoísta y ruidoso. Los profesores, compañeros de clase y de trabajo, y los mismos programadores tienen una gran memoria -- puede tomarle años olvidar a los tontos.
7. Otros recursos How To Become a Hacker de Eric S. Raymond, sobre cómo llegar a ser uno de esos enigmáticos ciudadanos del ciberespacio. Analiza la actitud y las habilidades básicas de los hackers, reflexionando sobre una serie de aspectos relativos al tema, que nos conciernen en gran medida pues los hackers son, ante todo, programadores. De hecho, sirvió de inspiración para este documento. Una traducción al español de este escrito está aquí Cómo ser un Programador. Un Resumen Corto, Comprensivo y Personal de Robert L. Read, es un excelente complemento de este. Una perspectiva personal de lo que debería ser un programador, basado en la experiencia personal de su autor y todo lo que una vez quiso que le dijeran. Incluye gran cantidad de consejos de vital importancia para quienes realmente desean llegar a ser buenos programadores, pero también se enfoca principalmente en cómo funcionar dentro de un equipo de programación. Así que quieres ser un Programador... que apareció en AnalogX. Un entretenido artículo -aunque un poco exagerado-- de lo que se requiere para ser programador. El Arte de la Programación en Unix también de Eric Raymond. El primer capítulo del libro The Art of Unix Programming. Su contenido es gran importancia para la comunidad de programadores, y en particular para los principiantes en el arte de la programación. Aunque el libro se enfoca en la programación en Unix, los principios y reglas que aborda se aplican fácilmente a la programación en general, independiente de la plataforma. Rick Moen y Eric Raymond escribieron el documento How To Ask Smart Questions (Cómo hacer preguntas inteligentes) cuya traducción al español está aquí. Te ayudará a buscar asistencia en una forma astuta para no ser ignorado, humillado o excluido de los foros por lo ingenuo de tus dudas. Por último, revisa de nuevo este documento. Encontrarán muchos enlaces hacia otros recursos que te pueden servir de mucho.
8. Preguntas frecuentes (PF) ¿Qué necesito para aprender a programar?
Deseos de aprender y pasión Gran motivación e iniciativa Gran tenacidad o terquedad Practicar y experimentar
¿Me enseñarías cómo programar? Desafortunadamente no tengo ni el tiempo ni la energía para hacer eso por ahora; mis propios proyectos, mi trabajo como programador y la docencia consumen el 110% de mi tiempo. Aún si pudiera hacerlo, la programación es una actitud y habilidad que debes aprender por ti mismo. Verás que los programadores de verdad quieren ayudarte, pero no te respetarán si comienzas a rogarles que te alimenten en la boca con todo lo que saben. Aprende unas cuantas cosas primero. Muéstrales que estás intentándolo, que eres capaz de aprender por tu cuenta. Luego ve, habla con los programadores y házles tus preguntas. ¿Dónde, entonces, pueden enseñarme a programar? En cualquier centro de computación que imparta cursos de programación para principiantes. Sin embargo, lo mencionado sobre leer y practicar por tu cuenta para complementar tus conocimientos y acelerar la curva de aprendizaje sigue siendo válido. En esos lugares, como en la universidad te enseñarán únicamente lo básico. El resto corre por tu cuenta, y cobra vital importancia el ser autodidacta. Puedes luego continuar con otro curso avanzado de programación en esos mismos lugares o seguir por tu cuenta empleando una PC, manuales y otros lenguajes. Puedes ir en la Universidad también, excepto que ahí es obligatorio llenar requisitos para
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006
NeoProgramadores - Cómo Convertirse en un Programador
Página 15 de 15
inscribirte en una carrera. Sin embargo, estarás en el centro de lo bueno: estudiarás mucha teoría de programación, varios lenguajes diferentes, técnicas de programación, tendrás muchos ejercicios y proyectos que hacer, compañeros de un nivel similar o superior con los cuales trabajar y aprender, etc. Esto, además de las bibliotecas públicas, los laboratorios y docentes de nivel a los cuales recurrir. ¿Dónde puedo encontrar algunos verdaderos programadores para comunicarme con ellos? En las universidades, empresas, convenciones sobre tecnología y foros de la Web. Tener también amigos de cursos superiores al tuyo o que sean programadores profesionales o docentes de computación con algo de tiempo libre a quien hacerle preguntas y pedirles ayuda es una bendición. Es aconsejable también hallar otro programador novato con quien puedas compartir experiencias y entrarle juntos a la empresa de aprender a programar. ¿Cuál lenguaje debo aprender primero? Python o Pascal si no los conoces ya, por ser metodológicos, fáciles de aprender y por todas las razones expuestas en este documento. Existen muchos sitios y manuales sobre estos lenguajes en Internet de donde puedes obtener documentació, ejemplos y ejercicios propuestos. Navega en la Red y verás el caudal de información que existe al respecto. Cuando hayas aprendido uno de estos lenguajes y estés listo para continuar con tu aprendizaje de la programación, te recomiendo que sigas con C, ya que es realmente importante. Aunque es más eficiente y poderoso, tiene una sintaxis un poco diferente. Pero si te urge aprender un lenguaje específico, te sugiero que sigas con uno afin. Por ejemplo, si lo que desea aprender es Visual FoxPro, aprenda primero FoxPro, su antecesor; si desea aprender Visual Basic, primero aprende Access, ya que VB lo utiliza; si desea aprender a programar en Internet, primero aprenda HTML, luego JavaScript y por último Java. Siga esta lógica (aprender lo básico antes de lo complejo) para no distorsionar ni afectar tu proceso de aprendizaje. ¿Por dónde puedo empezar? ¿Dónde puedo conseguir un lenguaje de programación? En este sitio puedes descargar compiladores gratuitos, entre ellos Python y Pascal y por toda la Red. Para ser un programador necesitas motivación, iniciativa y la capacidad para educarte a sí mismo. Comienza ahora.-
Ir al inicio de este artículo | Versión imprimible Ir a la Página Principal de NeoProgramadores
http://www.galeon.com/neoprogramadores/proghow2.htm
24/10/2006