INTRODUCCIÓN
¿Así que piensas que todo esto de la programación es
muy bonito, y te gustaría ser parte de ello, eh?
Si amas la programación, entonces este es el mejor
trabajo que puedas tener; sería difícil para mí imaginar realmente algo que
pudiera hacer que no fuera crear. Por otro lado, si solo te gusta la
programación, o si eres indiferente, este es el peor trabajo que posiblemente
podrías encontrar debido a que estás entrando en una arena competitiva donde la
obsesión es casi un prerrequisito. El desarrollo de software es casi como una
carrera, donde tu vida está en la línea, estás corriendo tan rápido como
puedes, y no tienes idea de cómo luce el terreno en frente tuyo; pero con un
abandono casi total te lanzas hacia adelante tan rápido sin importar si te
enfrentas a una sabana abierta o a un acantilado. Oh, y si tropiezas, se acabó,
y todo es tu culpa. ¿Suena un poco temerario? Debería, pero no dejes que te
desaliente; Solo no quiero pintarte ningún maravilloso paisaje y cuando ya lo esté
viviendo veas que no es así, pero es precisamente este sentido de
incertidumbre, desafío, y presión es lo que lo hace tan encantador y divertido.
Si aún continúas leyendo, ¡Supongo que estas decidido sobre
esto! Okey, ahora que te he dado un vistazo de lo que está adelante, hablemos
algo sobre tecnología, luego hablemos acerca de la diversión.
¿QUÉ SE REQUIERE PARA SER UN PROGRAMADOR?
No creo que hayan características específicas que te
excluyan de ser un programador, honestamente pienso que cualquiera con un poco o
mas bien un montón de deseo puede hacerlo, es sólo cuestión de cuánto tiempo
quieres invertir. Dicho esto, creo que hay varias equivocaciones comunes sobre
las habilidades que uno debe poseer para programar. Primero, no necesitas ser
alguna suerte de sabio de las matemáticas para ser un programador; ciertamente
es importante para comprender los fundamentos, y para sentirse cómodo con el
álgebra, pero eso es todo. Por supuesto, hay excepciones a esto; por ejemplo,
si estás interesado en los gráficos o la programación de juegos, tener muchas habilidades
matemáticas definitivamente te servirán. Otra equivocación común es que
necesitas ser algún tipo de monstruo de la lógica como el Sr. Spock de la serie
Star Trek; también esto tampoco es generalmente cierto, aunque ciertamente no
daña el tener un sentido de 'orden'. Algunas características deseables son Ser motivado por
el desafío, puesto que básicamente estás entrando en un juego donde eres
desafiado en cada esquina. También es muy importante ser implacable en la
persecución de tu meta, pero al mismo tiempo ser capaz de permanecer lo
suficientemente flexible como para no ser cegado por los límites percibidos. Finalmente,
¡creo que un útil desorden obsesivo-compulsivo corona bien las cosas, dándote
extra motivación para llevar las cosas más allá de donde ninguna persona cuerda
las llevaría! :)
¿QUÉ HAY DE LA ESCUELA (LA
UNIVERSIDAD)?
La universidad es un grandioso lugar
para aprender sobre los campos, pero la tecnología no es uno de ellos. No me
malinterpretes, no estoy diciendo que no creo que la escuela sea importante; al
contrario, PIENSO que la escuela es importante, pero no para aprender
programación. En lo que deberías enfocarte realmente en la escuela es en
aprender a trabajar junto a otros en proyectos, en particular aprender cómo
otras personas se acercan a los problemas y cómo ellos difieren de tu
aproximación. La universidad también te fuerza a hacer cosas que normalmente no
podrías considerar hacer.
Otra ventaja que obtienes de
la universidad es la implementación de redes; no estoy hablando de ese cable
ethernet en tu dormitorio, estoy hablando de conocer otras personas que
comparten tus intereses, y estarán un día trabajando en la misma industria que
tú. La industria de la programación en muchos aspectos es muy parecida a la
industria de la cinematografía; cuando alguien se ve involucrado en un buen
proyecto, ellos invitan a sus amigos a participar. Si no los conoces, no vas a
conseguir ser invitado (contratado), y la universidad en muchos casos es donde
los conoces. Otro aspecto que no puede ser descuidado es todo el lado educativo
de las cosas; quiero decir, vamos, ellos te enseñan un poquito más que los
tecnológicos, cosas como historia, psicología, etc... Y aunque esas cosas
pueden no PARECER relacionarse directamente con la programación, te
sorprendería de algunas fuentes de inspiración que pueden ser.
¿POR DÓNDE DEBERÍA EMPEZAR?
Primero, recomendaría mojar
tus pies antes de tomar algunas decisiones trascendentales para tu vida aquí;
como dije antes, esta línea de trabajo puede ser divertida, pero también puede
ser realmente miserable, así que no solo saltes adentro. La primera cosa por
hacer es ir a tu librería local, y comprar un libro sobre programación y seguir
mi blog y buscar algunos otros blog o paginas sobre programación para
principiantes. Pero hay tantos libros y páginas y blog, ¿y qué hay con todos
esos diferentes lenguajes? Yo recomendaría apegarte a uno de los siguientes
lenguajes: C o C++, Visual Basic, Pascal (Delphi), o Java. Aléjate de cualquier
otro, puesto que probablemente no van a darte el mismo nivel de flexibilidad
que te darán los antes mencionados, además esos lenguajes tendrás la mayor
cantidad de libros, paginas y blog de los cuales escoger. Pero hagas lo que
hagas, ¡no selecciones un lenguaje por ahora! Sólo estamos probando las aguas,
¿correcto? No estamos escribiendo el próximo Microsoft Office, así que eso no
es importante todavía; y sin importar lo que cualquiera diga, esos lenguaje son
todos muy similares, y muy poderosos, con aplicaciones comerciales que están
escritas con cualquiera de ellos. Okey, así que necesitamos seleccionar un
libro, algunas paginas y blogs, entre esos blogs incluye el mio, ahora aquí
está el método que recomiendo. Elige 1 libro, 1 pagina y 1 blog sobre cada uno de los lenguajes que he
mencionado arriba. Ve libro por libro, pagina por página, blog por blog y solo zambúllete a través de ellos, mirando
en particular los ejemplos de programación (código fuente) que contienen. Una
vez que obtengas una rápida percepción del lenguaje; asegúrate de no invertir
más de un par de minutos con cualquiera de ellos. Después que hayas terminado
esto, elige el libro, la pagina y el blog del que tienes los mejores
presentimientos; el libro, la pagina y blog deben tratar del mismo lenguaje ya
que será el lenguaje con el cual vas iniciar y ahora llego el momento de preparase
para algo de lectura.
LAS HERRAMIENTAS DEL COMERCIO.
Enfrentémoslo, las
herramientas correctas pueden hacer el trabajo mucho más fácil; y en ningún
lugar esto es tan cierto como en el desarrollo de software. Así, si estás
usando C o C++, Visual Basic, o Java, esta va a ser probablemente la plataforma
que estarás usando. Hay algunas alternativas gratuitas por ahí para alguno de
esos lenguajes, así que podrías checarlas.
Hay otra herramienta que es
muy importante, y esa es el editor de código, o en lo que realmente haces toda
tu programación. Te sugiero usar un editor llamado MultiEdit, pero existen otros.
SIENDO EL ETERNO OPTIMISTA.
Se dice que el más grande optimista
en el mundo es el desarrollador de software - nadie en su sano juicio
posiblemente pensaría que sólo el escribir CUALQUIER programa sería posible
cuando ves la 'gran escena'. Por ejemplo, mira todos los programas que se
ejecutan en el website de AnalogX; ¿cuánto te tomaría escribirlos todos? ¿Es
una perspectiva muy dantesca, verdad? Así que ¿cómo lo hice? ¿Algún tipo de
dirección superhumana me mantuvo conectando programas, aunque se pensara que
parecía imposible? De ninguna manera, ¡aún el más grande optimista tiene sus
límites! La clave es ver las cosas no como un todo, sino por partes; por
ejemplo, ¿cuánto te tomaría hacer un programa de un sitio? ¿No parece tan
imposible, verdad?
En gran medida, de eso es lo
que trata todo el diseño de software; dividiendo un proyecto en pequeñas piezas
bien diseñadas... Si no inviertes suficiente tiempo, no vas a ser capaz de
comerte todo el pastel, o peor, ¡te atragantarás con una de esas piezas! :)
Cuando empiezas a hacer tu primer programa 'real' (es decir, uno que realmente
haga algo que la gente podría querer), asegúrate de invertir una razonable
cantidad de tiempo planeando cómo vas a hacer las cosas, en qué orden, y qué
quieres al final que sea el resultado. Si haces esto, encontrarás que las cosas
van mucho más rápido de lo que pensaste que sería posible, y mucho más fáciles
de lo que podrías haber anticipado.
¡TODO ES ACERCA DE TRABAJO EN EQUIPO
BEBÉ!
Si estás planeando ser un programador
solitario, piénsalo de nuevo, 99.9% de los proyectos involucran EQUIPOS, y como
tal necesitas acostumbrarte a trabajar en ellos, y confiar en otros en un
proyecto. Una vez que has bajado las armas después de terminar tus propios
proyectos pequeños, probablemente sea tiempo para empezar a buscar cómo
involucrarte en un equipo de proyecto de algún tipo. Esto podría ser un juego,
un demo, o lo que sea; solo asegúrate que sea algo en lo que estés interesado,
y que todos los demás también. Hay varias formas de encontrar proyectos; puedes
unirte a algunos existentes, buscar alrededor equipos que apenas se estén
formando, o incluso empezar el tuyo propio. La cosa importante a observar al
aprender de esto es cómo trabajar con otros.
LECTURAS RECOMENDADAS.
La lectura es fundamental. Y no creo
que sea más aparente que en el desarrollo de software; si no te gusta leer
libros, entonces considera hacer algo más, puesto que ellos son clave para que
mejores y te percates de tu potencial. Hay tres razones que te ayudaran a desarrollar
software que son experiencia, la cual mas adquirirla con la practica y con el
tiempo, un buen equipo de trabajo conformado de gente brillante y trabajadora,
y los libros, pagina y blog que hay que leer, así que aquí están algunos libros
que te recomiendo que sean parte de tu biblioteca personal que vas a ir armando:
¡Este es indiscutiblemente un OBLIGATORIO para
cualquier desarrollador de software, sin importar qué lenguaje de programación
use! Cubre muchas prácticas distintas y técnicas relacionadas con el estilo de
codificación en un estilo muy imparcial.
La secuencia de Code Complete, este libro está
orientado más hacia cómo planear un proyecto, señalar trampas y peligros
potenciales, etc. Otro sólido libro cargado de conocimientos acerca de qué se
trata realmente el desarrollo de software.
Este libro toma una aproximación diferente al
desarrollo, enfocándose más en el equipo y en sus dinámicas en lugar de los
mecanismos de la programación. Esto a menudo es algo que se descuida, y los
resultados son visibles en muchos de los programas liberados estos días.
Este es el libro que realmente empezó todo; aunque fue
escrito hace más de 20 años, casi todo en él se aplica hoy en día.
Si vas a ser un programador de Windows (en C o C++),
entonces necesitas comprar este libro.
Más adelante estaré publicando una
lista más amplia de libros y también incluiré algunos sitios web que deben
tener dentro de sus páginas de favoritos, así como blogs.
ENVUELVA.
Espero que esto te haya dado algunas
ideas de lo que se requiere para ser un programador, no solo desde un punto de
vista tecnológico, sino también desde un punto de vista psicológico.
Personalmente encuentro la
programación muy gratificante - no hay nada como ver a alguien usar algo que
hayas escrito para hacer su vida un poquito mejor. Así, si decides darle persecución
al desarrollo de software, te deseo suerte, y espero que en el futuro tenga la
oportunidad de descargar de la Red algo que TU desarrollaste o me invites a ser
parte de tu equipo de desarrollo o te integres al equipo de desarrollo que
pretendo formar. :)