Música para desarrollar

Los desarrolladores de software vivimos conectados toda la vida a dos cosas, internet y a nuestros audífonos, por lo general le damos la vuelta a nuestras bibliotecas musicales unas 100 veces en un periodo de un año, así que facilmente nos aburrimos de la misma música.

Además no podemos escuchar cualquier música, ya que si hay demasiadas voces tiendes a distraerte, tu cerebro lo hace inconscientemente, para eso es mejor tener música clásica, ciertos soundtracks o música electronica/tecno.

Hace poco acabo de descubrir a DJ Bolivia y con uno de sus tracks pude trabajar sin parar durante varias horas, sin distracciones y con una productividad bastante buena, así que es mejor si les doy un listado de sus mixes y un pequeño extra para hacer cosas heroicas sacadas de una lista de Reddit.

Music to code by DJ Bolivia:

Y así es como trabajé este año

Y se fue otro año más, pero para no escribir el típico post de propósitos no-cumplidos y que pasarán a la lista de “ahora si voy a hacer ejercicio este año, pero de verdad lo haré!” voy a cambiar un poco y mejor mencionaré que herramientas se convirtieron en indispensables para mi trabajo diario.

Ha sido un año muy interesante, nuevos proyectos nuevas herramientas y sobre todo mucho aprendizaje, ahora sí la lista sin un orden especial:

  • iTerm2 – Remplazo de terminal, dado que ahora mantengo 3 servidores linux esta herramienta es la que más uso día a día, me permite acceso SSH y la posibilidad de usar VIM tanto en el servidor como en mi local, tiene muy buenas paletas de colores y lo que más me encanta la opción de dividir la pantalla en multiples ventanas, así que usualmente verán mi pantalla de esta manera: iTerm2 dividido
  • Sparrow – El mejor cliente de email para Mac que conozco, simplemente lo mejor, la forma de organizar las conversaciones al estilo Gmail, los shortcuts y la excelente interfaz lo hacen mi cliente preferido (yo profesaba el amor por el uso de una interfaz web, pero Sparrow me ganó).
  • Xcode – Estoy haciendo algunas aplicaciones para iOS así que este editor esta abierto una buena parte del día en mi maquina, el storyboard y las mejoras en la version 4.2.1 son una delicia.
  • PHPStorm – Dado que aún hago bastante PHP en Babker, mi editor preferido es este, muchos shortcuts, configuración de plantillas, refactoring e integración con SVN.
  • SublimeText 2 – Otro editor, dado que aún no me puedo acostumbrar al 100% a usar vim, este editor se ha convertido muchas veces en el remplazo de phpStorm, la simplicidad, el agrupamiento de carpetas para el proyecto y el remplazar palabras dado el enfoque, hacen de este un must.
  • Evernote – No se por que pero me resistía a probar este servicio, supongo que era por que no le veía la suficiente utilidad pero eso cambio ahora que lo uso como herramienta de notas y GTD.
  • VMWare Fusion – Maquinas virtuales por todos lados, Linux, Windows y Mac, solo necesito un SSD y el probar en multiples plataformas será pan comido.
  • Nginx – Servidor web y proxy, este año cambié el servidor web de Apache por Nginx y el cambio fue asombroso, la escalabilidad y el alto performance, piece of cake.
  • Flux – Si haz estado en la computadora en la noche/madrugada y luego te lloran los ojos, esta app es para tí, ajusta el color a uno más cálido conforme avanza el día, para que así tus ojos no se cansen.
  • Adium, MonoDevelop, MacFuse, NaviCat, Lion, Balsamiq Mockups y GitHub (la app) son mención especial dado que si los uso pero algunos ya lo hacia desde antes o no lo hago con tanta frecuencia.

Este año hubo nuevos proyectos y cambios, lo más notable es el cambio que poco a poco estoy haciendo a Objective-C, me encanta este lenguaje y las plataformas donde se puede usar, posiblemente me pase a tiempo completo como iOS/Mac developer pero aún no lo sé.

Estas son las herramientas que este año utilice en el día a día, son las que mejor resultado me han dado y las que hacen que realizar las tareas sea algo delicioso, en una semana o tal ves 2 publicaré un nuevo post con algunas sorpresas y proyectos que verán luz este 2012.

¿Y para tí, cuáles fueron esas Apps que te hicieron grande este 2011?

¿Por qué trabajar largas horas realmente no funciona?

Si existe algo en la mentalidad de los empresarios de edad avanzada y muchos jóvenes también es que toda persona que no realice un cargo de gerencia es un simple obrero y debería trabajar 8 horas continuas sin descanso e incluso más si es necesario por periodos largos de tiempo.

En el caso de los desarrolladores, diseñadores y demás personas que trabajan creando ideas o resolviendo problemas, es una regla que no es aplicable y lo que es peor, es la razón por la cuál las personas bajan su productividad y calidad en el trabajo.

Veamos, ¿En que momento del día es cuando se te ocurre esa maravillosa idea que resolvera aquel problema complicado que tienes asignado?, ¿a las 9am cuando prendes tu computadora para trabajar?, ¿después de esa reunión que te quito 1 hora de tu valioso tiempo?, ¿durante alguna de las 8 horas que trabajas?.

La realidad es que solo un pequeño porcentaje de esas ideas ocurren mientras estas en el trabajo, todas las otras ocurren mientras estas con tu familia, el en gimnasio, en el parque, en el transporte, en el baño, etc…, lo cierto es que todas ocurren mientras no estas obligado a sentarte y cumplir un horario, sino cuando tu cerebro se relaja y permite que el lado creativo fluya.

No solo yo digo esto, Jason Fried fundador de 37signals (son los que tienen BaseCamp, FireCamp y una serie de soluciones para manejar proyectos bastante exitosos) lo dice en su charla en el TED:

Tengo una rutina bastante curiosa, al menos 3 días a la semana me levanto a las 5am a codificar algo, puede ser un proyecto para algún cliente, un proyecto propio o la misma tesis, me levanto lo más temprano posible, a la hora en que nadie se encuentra despierto y las distracciones son mínimas, voy por un vaso de agua o leche, enciendo mi monitor externo y las ideas comienzan a fluir.

En ocasiones problemas en los que he estado atascado por más de 4 horas los resuelvo en 20 minutos a esa hora de la mañana, simplemente funciono mejor en ese momento. No solo eso, cuando me siento a codificar los fines de semana pasa lo mismo, al no tener una presión de horarios ni distracción por parte de otros compañeros de trabajo puedo comenzar a las 10am y perderme hasta que dan las 4pm en una concentración que definitivamente es casi imposible en el trabajo.

Ahora regresando al tema, desgastar a los profesionistas haciendo que trabajen horas extras por periodos largos de tiempo es simplemente estúpido, dado que es como sobre calentar el motor de un vehículo, simplemente deja de funcionar y se quema debido a que se fuerza más allá de sus limites. Lo mismo pasa con el cerebro de estas personas, entran en un estado en donde lo único que hacen es sentarse y buscar la mejor manera de distraerse o de pasar el tiempo, ¿por qué?, por que sus cerebros están agotados y no piensan más, piden descanso y distracción, el cuerpo humano así esta diseñado.

Cuando trabajo a mi ritmo, en los lugares donde puedo ser creativo y sin presiones o distracciones soy un 200% más productivo, termino las cosas más rapido, mejor y aún con un extra que de otra forma no lo daría, ¿no lo crees?, intenta darles un respiro a tus profesionistas, deja que la creatividad fluya en su cerebro al no encajonarlos y dales libertad, ¿sabes que es lo que ocurrirá?, serán felices, la felicidad dopara su cerebro y comenzará a crear ideas y soluciones, esas soluciones se volverán tangibles con su esfuerzo y gracias a eso la empresa mejorará de una manera como nunca antes, para los viejos eso significa mucho más dinero. ¿Qué pasa si no lo hago?, nada, solo preparate para tener un buen departamento de Recursos Humanos por la alta rotación de personal y la poca calidad del trabajo que se entregará.

De tecnologías, herramientas y otras cosas

Hace un tiempo ya, mientras estaba tomando un café dentro de un Starbucks y pasaba un sitio de .NET a Mono (vaya cosa no es complicado ja!), un conocido al que tenía bastante sin ver llego y comenzamos a charlar, todo iba perfectamente bien en ponerlos al día en que haciamos en esos momentos hasta que noto un detalle, yo estaba usando una MacBook Pro en lugar de la XPS Dell que tenía anteriormente.

La charla se fue a algo como esto:

El – ¿Y por qué es que dejaste Windows?, aquí (León) nadie paga por desarrollos que no sean en .NET

Yo – Por que no requiero Windows para desarrollar en .NET, lo puedo hacer desde aquí.

El – Mmm… no lo se, yo no pagaría eso.

Además de la charla normal de por que OS X o Windows, lo anterior es lo realmente importante, este amigo es un empresario consolidado en la región, así que su punto de vista me dejo pensando, ¿acasó estamos tan casados con una tecnología?, ¿juzgamos unicamente por la herramienta y no por el resultado?.

En ese momento me dio un poco de miedo, ¿acaso esta es el punto de vista del empresario común?, un par de días despues me di cuenta que no es así, comencé un proyecto usando PHP y otro de nuevo en Mono, a estos nuevos clientes no les importó en absoluto la plataforma o tecnología a utilizar, ellos solo querían resultados y los querían pronto.

No eh vuelto a ver a mi amigo, se que su negocio va bien, pero se que podría ir mejor, la inclusión de tecnologías Open Source, el acercamiento a plataformas móviles como iOS o Android es inevitable en la región, ya estoy en platicas con otro excelente amigo para crear aplicaciones para móviles orientadas al mercado local y mejorar la industria.

¿Usas .NET, PHP, Objective-C, Ruby, Java?, excelente, entonces eres parte del ecosistema de desarrolladores pero nadamás, no existe ni mejor ni peor, solo herramientas y buenos o malos desarrolladores.

Sí, un post sin mucho sentido pero, ¿para eso esta el blog no?

Cambiar el usuario a una working copy de SVN

SVN es un sistema de control de código fuente, es el más popular actualmente aunque Git esta tomando muchos adeptos.

Me pasaron una maquina virtual de Ubuntu con una cuenta de SVN que no era la mía, para cambiarla sencillamente entras a la Terminal y escribes el siguiente código:

svn update --username <usuario>  --password <password>

El Password hasta donde recuerdo no es necesario ya que te volvera a pedir autenticarte, aquí es donde podrás asignar tus nuevas credenciales y los cambios ya aparecerán con tu usuario.