El dragón en la luna

Mis ideas y sueños mezclados con un poco de locura

Cambios, muchos cambios

Este nuevo año ha empezado con algunos cambios drásticos. He decidido arriesgarme un poco y he regresado al trabajo freelance, aunque esta vez de manera un poco más agresiva.

A lo largo del año pasado he aprendido muchas cosas sobre el desarrollo de software que antes no conocía o solo las conocía en teoría. Fueron muchas cosas las que aprendí, pero no fueron muchas las mejoras que pude poner en práctica. Quiero aprovechar estas experiencias para impulsarme nuevamente como desarrollador freelance.

Creo que para llegar a aprovechar realmente tus propias ideas no hay nada mejor que trabajar por cuenta propia. Cuando eres un subordinado siempre estás influenciado por las ideas de tus jefes, sin importar que tanta libertad puedas tener e indiferentemente si las ideas son buenas o malas. En este momento quiero poder poner en práctica mis propias ideas, y para lograr que tengan éxito vale la pena esforzarme.

Como parte de las ideas que quiero impulsar durante este año he retomado el desarrollo de MoonDragon con un enfoque bastante diferente, estoy buscando promover la creación de una comunidad de desarrolladores en TuApp.net y he reconstruido mi página personal para que me sirva en la promoción de mi trabajo como freelance.

Por el momento he estado bastante atareado en mi casa por que la están remodelando y en realidad no he podido dedicarme a todo lo que quisiera, pero si he logrado hacer un par de cambios que son necesarios.

Dificultades son varias en este momento, aunque gracias a Dios tengo un par de cosas que me mantendran a flote económicamente, existe un peso muy grande con proyectos que se dejaron abandonados en el pasado y que hoy en día deben de ser terminados. Espero que en cuanto la situación en mi casa mejore y ya no halla tanto desorden pueda dedicarme a todo lo que esta pendiente.

Espero que este sea solamente el inicio de varios proyectos interesantes durante este año.

Consejos para definir la arquitectura de un sistema

Si hay algo por lo que realmente vale la pena trabajar en una empresa de desarrollo, es porque solo de esa manera aprendes en realidad sobre gestión de proyectos. En las dos universidades en las que he estudiado, las materias de Análisis de Sistemas dejan mucho que desear.

Recientemente he aprendido que al trabajar colaborativamente, hay un elemento muy de peso en el desarrollo: la arquitectura. La arquitectura de un sistema define como van a integrarse las partes creadas por los distintos desarrolladores. Mientras más grande sea un proyecto, de más partes se compone y más compleja es su arquitectura.

Sin una arquitectura definida, los distintos estilos de programación de dos desarrolladores podrían imposibilitar la integración de las partes programadas. El verdadero problema viene en la manera de definir esta arquitectura. La documentación es una herramienta muy valiosa, pero hay que tomar en cuenta que aunque a los programadores les gusta tener la documentación del sistema a la mano, no a muchos les gusta crear estos documentos.

Estos son algunos de los consejos que yo puedo sugerir para definir una arquitectura estándar:

  • Definir las reglas de estilo que se aplicarán al código desde un inicio. Esto incluye nombres de clases, funciones, tabulaciones, espacios entre sentencias, etc.
  • Utilizar un patrón de diseño establecido. Siendo PHP mi especialidad estoy más familiarizado con Modelo Vista Controlador, pero hay otros disponibles.
  • Utilizar un framework. Esto no solo ahorra tiempo de desarrollo sino que da más cohesión al proyecto.
  • Definir cómo se utilizará el framework. Los frameworks suelen tener muchas opciones disponibles, especialmente los libres, y en algunos casos tienen tanta flexibilidad que pueden terminarse usando estilos de programación opuestos.
  • Definir un API para las funciones básicas de la aplicación. Aquellas características que se repiten a menudo deben de estar definidas desde el inicio y bien documentadas.
  • Enfocarse en la comunicación de las partes. Muchas veces lo más importante no es lo que hacen los procesos, sino que la información que necesitan y que devuelven como resultado.
  • Recordar constantemente lo que se ha acordado. El plan en el papel puede ser perfecto, pero si los desarrolladores no lo cumplieron de nada sirve.

Es importante que estas cosas se empiecen a trabajar antes de iniciar el proyecto, y mejor aún si existe una persona solamente dedicada a ello. Es muy difícil adaptar un proyecto ya comenzado a una arquitectura específica.

Seguramente he pasado por alto algunas cosas, y al final de cuenta es la experiencia lo que más influye al momento de diseñar una arquitectura efectiva. ¿Cuáles considerarían ustedes como los pasos más efectivos para definir la arquitectura de un nuevo proyecto?

Nuevo propósito

Podría decirse que me he logrado acomodar bastante bien a mi trabajo, que voy lo suficientemente bien en la universidad y que poco a poco se han logrado ir resolviendo algunos de los problemas que he tenido en los últimos meses. Supongo que los humanos tenemos a buscar estabilizad, patrones conocidos, costumbres, hábitos, y por muy nueva que sea una situación poco a poco vamos convirtiéndola en un hábito más.

Si veo el estado en el que he dejado muchos proyectos en este momento, puedo decir que me he acomodado. Aquellos proyectos que no tienen una relevancia inmediata han sido dejado de lados, me he acostumbrado a dar solo el esfuerzo necesario en el trabajo y pasar el resto del tiempo en otras cosas que no tienen nada que ver con programación y computadoras. Creo que eso es bueno, pero hay algunos pequeños cambios que me interesa hacer.

Esta profesión es muy demandante en términos de “estar al día con las innovaciones”. He alcanzado un nivel aceptable de desarrollo con ciertas tecnologías, como PHP, pero todavía estoy en pañales en muchas de las cosas nuevas que vienen. Si me acomodo en lo que puedo hacer en este momento solamente porque lo hago “bien”, corro el riesgo de quedarme atrás.

Es por eso que estoy buscando definir un nuevo grupo de objetivos, más acorde con mi realidad actual pero que me permitan siempre seguir creciendo y superándome.

Algunos proyectos e intereses parecen ya no estar muy al día con mi situación actual, y es necesario hacer algunos cambios. También han habido cosas que he dejado inconclusas durante mucho tiempo y es necesario terminar.

A veces es difícil tener que estarme presionando para ser responsable, estar al día con la tecnología, atender los proyectos en los que estoy involucrado, pero poco a poco es necesario ir avanzando, porque llega un momento en el que miras hacia atrás y te sientes satisfecho de todo el camino recorrido.

Retomando el control

Después de aproximadamente dos semanas de concentración total (y explotación) para poder terminar el proyecto en el que estaba trabajando (esta vez remunerado) finalmente estoy libre para recuperar mi vida.

Sinceramente ahorita no tengo nada de que escribir, he apagado todos los procesos mentales que no estuvieran relacionados con el proyecto y supervivencia (comer, dormir), e incluso algunos de estos últimos también han sido apagados (dormir).

A lo mejor soy un adicto a la programación, realmente di en el clavo con mi vocación, porque lo primero que quiero hacer en este momento es retomar el hilo de los proyectos que deje en el aire al iniciar el trabajo, principalmente MoonDragon. Hay otras cosas que quiero reorganizar con más calma, como mi página personal que la siento ya bastante obsoleta.

Pero lo que definitivamente más quiero hacer es pasar tiempo con mi novia preciosa, porque casi no la he visto últimamente.

A ver si me abunda el tiempo y escribo un poco más de todo lo que pienso hacer.

Aprovechando el día

Ya empezaron las clases, el horario ha sido más duro de lo que imaginaba, tengo que pasar casi todo el día en la universidad por una sola materia. También tengo varios proyectos en los que me tengo que poner al día, y estoy empezando a buscar proyectos pagados en sitios como RentACoder.com:http://rentacoder.com, porque últimamente ando algo escaso de dinero.

De verdad puedo sentir la presión, y me cuesta un poco acostumbrarme. Quería hacer muchas cosas en las vacaciones, ponerme a jugar en línea, leer, y ya no es tiempo para andar haciendo cosas así. Es necesario aprovechar los ratos libres que da la universidad para ponerse al día con algún proyecto o tratar de terminar algún artículo pendiente.

Una de las cosas que he visto, y que aún estoy comprobando, es que los días en los que tengo mucho trabajo pesado me da mucha hambre. Siempre he sido reconocido por dormirme en clases, y creo que es parte del mismo efecto. Si no como, me da sueño. Aunque no tengo bases para comprobar esto, y puede que simplemente me aburra y me quede dormido, pero no se puede descartar nada.

Por ahora lo importante es tratar de hacer lo más posible, y sacar adelante muchas de las cosas que hay para este año.

Proyectos vacacionales

Finalmente estoy completamente de vacaciones. Los resultados de este ciclo en la universidad no fueron los esperados, pero uno solamente puede aprender de los errores y seguir adelante.

He estado revisando mi lista de pendientes para buscar actividades para hacer durante estas vacaciones. La lista es bastante grande, el resultado de todas las cosas que he aplazado durante el año. Siento que no esta todo lo que realmente tengo que hacer estas vacaciones, pero es un comienzo.

La mayor parte de mi atención será para los proyectos de MoonDragon y tuApp.net. Ambos proyectos han quedado estancados en el último mes del ciclo y necesitan una bocanada de aire fresco, renovarse en algunos aspectos y seguir adelante.

Hay otras cosas más oscuras que han ido quedando relegadas durante varios meses. Esta es una buena oportunidad para empezar, o retomar, estas actividades que se han ahogado con el día a día, y no han tenido oportunidad de desarrollarse.

Espero que estas sean unas vacaciones realmente provechosas, que aporten positivamente a muchas de las cosas que quiero realizar.

Archivo