msgbartop
Desarrollador Web, Android y iOS
msgbarbottom

¿Por qué pierdes el tiempo programando en tu tiempo libre?

Si, he dicho “perder el tiempo“. Exactamente eso es lo que te harán creer los que no lo hacen. Te harán parecer idiota por no dedicar tu tiempo libre a cosas más productivas como ver series, leer libros o cualquier otra cosa que ellos prefieran hacer.

Creo que si eres un apasionado de la programación, en tu tiempo libre te apetecerá probar nuevos lenguajes, escuchar charlas de algún evento al que no pudiste asistir, desarrollar un proyecto personal, etc.

Ojo! No quiere decir que no veas series, no vayas al cine o no leas libros. No somos bichos raros sin vida social, por mucho que quieran hacértelo parecer. Una cosa no quita la otra. De hecho, serás más selectivo con lo que ves y realmente verás lo que de verdad te gusta.

Programadores que aprenden “sobre la marcha” en su trabajo generarán proyectos de baja calidad y, muy posiblemente, con errores. No les pidas que hagan algo que se sale de su ámbito, no querrán aprender, solo seguir con lo que están haciendo. Te puedes encontrar con que tengas que deletrear “vim” a una persona con varios años de experiencia programando o explicar que es “git”. Hay otras que programan con un framework en particular por que es el que utilizan en su trabajo y no han probado más, ni siquiera saben por que lo utilizan, lo utilizan y punto.

Piensa que es lo que quieres estar haciendo dentro de 5 años. Estoy muy seguro de que si no aprendes por tu cuenta estarás haciendo lo mismo que ahora. Y 5 años en este mundillo es mucho tiempo y puede que todo sea muy distinto. Incluso que ya no hagan falta perfiles como el tuyo.

Lo ilustro con una imagen de @betinorama

1601448_448639595239362_1263236312_n

Hace poco un amigo me preguntó que es lo que tenía que hacer para avanzar en su profesión, que en su empresa se sentía estancado haciendo siempre lo mismo. Le recomendé que mirara alguna empresa donde le gustaría trabajar y viese sus ofertas de empleo. Que mirase el tipo de perfil que buscan y aprendiese para llegar a ser de ese perfil. En un tiempo quizás esté preparado para ir a hacer una entrevista (o entrar en otra empresa que pidan un perfil similar). Eso implica malgastar tu tiempo en aprender, en formarte.

Otro caso: por segundas navidades consecutivas me he encontrado con un conocido que me decía que su pareja (programadora java) estaba en paro. La primera vez le dije que la suerte que tenemos es que es relativamente sencillo “reciclarnos”, que aprendiese algo nuevo que le llamara la atención (Android, iOS, web, etc.) y buscara un trabajo diferente y relacionado con lo que estaba aprendiendo. Estas últimas navidades estaba exactamente en la misma situación. Eso sí, seguía siendo programadora java. Supongo que prefirió no perder el tiempo en aprender algo nuevo.

Programadores entusiastas de su profesión formarán un equipo apasionado por su trabajo, lo que sin duda generará un resultado de calidad y un ambiente excelente. Se acabó lo de desear que llegue la hora de salir o el fin de semana por que estás agobiado o te aburre lo que haces.

Querrás que sea lunes.

No solo para seguir programando si no para compartir tu tiempo con personas apasionadas por su trabajo, hablar de lo nuevo que has leído el fin de semana, probar nuevas tecnologías, aprender un nuevo lenguaje recomendado por algún compañero, comentar el último capítulo de la serie que todos veis, etc.

No en todas las empresas se puede hacer lo del último párrafo, pero las personas entusiastas por su trabajo suelen encontrar empresas donde seguir creciendo y donde se les permite seguir aprendiendo.

Y si tu trabajo ya es así, significa que ya has perdido tu tiempo en aprender y ahora donde aprendes mucho más es en tu trabajo diario. Aprovéchalo.

Etiquetas: ,

8 consejos para realizar proyectos como freelance mientras trabajas por cuenta ajena

Como programador, es posible que en algún momento te hayas planteado buscar proyectos (o se han puesto en contacto contigo) para programarlos en tu tiempo libre y sacarte un pequeño sobresueldo, coger experiencia en el trato con clientes, etc. Hay varios puntos importantes que creo que “obviamos” cuando queremos dar este paso y que son muy importantes si no queremos fracasar estrepitosamente.

Habrá bastantes más puntos que añadir a esta lista (no dudes en dejar tu opinión en los comentarios), pero estos son algunos de los más importantes bajo mi punto de vista y por mi experiencia personal:

1) Si no has participado en el análisis del proyecto, exige un documento de funcionalidad o especificación donde se explique con detalle como debe funcionar. Tener una visión muy general del proyecto hará que tengas dudas o desarrolles alguna funcionalidad que no se corresponde con lo que la otra parte tenía en mente. Si has participado, doy por hecho que tienes una visión más específica de lo que hay que hacer. Aún así, escribe ese documento para tenerlo todo claro.

2) Si solo vas a programar y no diseñar/maquetar, debes pedir el diseño cuanto antes por diferentes motivos: si ya tienes el diseño, es más rápido empezar a situar cada sección en el lugar adecuado, algo sin diseño es “feo” de enseñar, etc. Un cambio de diseño a mitad de proyecto puede echar por tierra lo que has hecho hasta ahora (especialmente sensible en el caso de apps móviles).

3) Estable tu precio/hora o precio por proyecto (recomendado para proyectos largos) y se inflexible en este aspecto. No rebajes el precio pensando que si no no te aceptarán el presupuesto. Cobres más o cobres menos, te exigirán los plazos, funcionalidades, etc. y trabajarás las mismas horas o más.

4) Cualquier cambio en la los requisitos o en el documento de funcionalidad, lo deberás cobrar aparte o pactar dejarlo para una segunda fase. Esos cambios a mitad de desarrollo pueden “matar” tu motivación en el proyecto, aumentarán las horas de programación, tu estrés para llegar a la fecha de entrega (por que eso si que no variará aunque se produzcan cambios en mitad del proyecto), etc. Piensa en el punto anterior e imagina que has rebajado el precio para que aceptaran el presupuesto.

5) Exige cobrar un porcentaje al empezar el desarrollo y el resto al entregarlo. Imagina que no te llegan a pagar o deciden pagarte menos de lo que acordasteis.

6) Establece un día a la semana para enseñar lo que has programado hasta ese momento y exige feedback. Es importante que vayas mostrando tu trabajo y que la otra parte de el visto bueno. Asegúrate de que lo prueban de verdad (registros en la base de datos, logs, etc.) y no que solo le hayan echado un vistazo “por encima”.

7) Sé consciente de las horas que vas a trabajar. No hagas la estimación pensando que harás más horas al día para poder llegar antes a la fecha de entrega y que así te acepten el presupuesto. Si trabajas por cuenta ajena solo tendrás las tardes/noches para realizar el trabajo. Piensa que no podrás dedicar todo ese tiempo “libre” al proyecto ya que siempre hay imprevistos: ir a hacer la compra, sales tarde de la oficina, vienen unos amigos, quieres ir al gimnasio, etc. Recuerda que al día siguiente tienes que madrugar para ir a trabajar de nuevo (el trabajo que realmente te da de comer) y debes ir descansado.

8) Relacionado con el punto anterior y que merece un apartado separado: No descuides a tu familia (mujer, novia, amigos, etc.) por querer dedicar más horas al proyecto. Piensa por un momento: Has estimado que vas a trabajar más horas al día para poder dar una fecha de entrega más cercana, rebajaste tu precio/hora para que te aceptaran el presupuesto, estás cansado ya que no duermes las horas necesarias, discutes con tu mujer por que te estás pasando todo el mes en el ordenador, día estresante en la oficina por que ha habido problemas en uno de los proyectos, etc. Resultado: Desmotivación total y absoluta.

Como puedes ver, he utilizado mucho la palabra “exige“. Si, tu también debes exigir cosas ya que la otra parte te exigirá a ti constantemente, dejándote prácticamente toda la responsabilidad y, por tanto, toda la culpa si se retrasa la fecha de entrega o si hay cosas que no están bien (aunque sea algo que la otra parte no lo había pensado en detalle o que una vez programado no lo ha probado lo suficiente).

Cada cliente es un mundo. No pienses que porque conozcas personalmente (o por Twitter, Linkedin, etc.) al cliente, debes fiarte y obviar alguno de los puntos anteriores. También depende del proyecto y, si es corto, puedes sacrificarte una o dos semanas y meterle horas, aunque no lo recomiendo si supera ese tiempo.

Si te sientes identificado o piensas que falta algún punto importante, hazlo en los comentarios! ;)

Etiquetas: , , , , , , ,

Lanzador de Sublime Text 2 en Linux

Sublime Text 2 es un editor de texto que se está haciendo muy popular debido a su facilidad de uso y su entorno minimalista. Sublime Text 2 hace que solo te concentres en el código que estás escribiendo.

Si nos descargamos el programa desde su propia web, descubrimos que al descomprimirlo se trata de una carpeta donde se encuentra todo lo necesario para ejecutar el programa. Cada vez que queramos abrirlo, debemos entrar en esta carpeta y ejecutar el archivo de la aplicación (también podemos crear un acceso directo en el escritorio). En esta carpeta no encontraremos ni siquiera el icono de Sublime Text 2.

¿Cómo solucionarlo?

- Primero nos descargamos el icono del programa para que el lanzador quede “bonito” :)

- Creamos un enlace de la aplicación a la carpeta /usr/bin/:

sudo ln -s /home/jonseg/sublime-text-2/sublime_text /usr/bin/sublime_text

- Copiamos el icono que nos hemos descargado antes al directorio donde se encuentran los iconos del sistema:

sudo cp sublime.png /usr/share/icons/

- Creamos el archivo sublime.desktop con el siguiente contenido:

[Desktop Entry]
Version=2.0
Type=Application
Name=Sublime Text 2
Comment=Editor Sublime Text 2
TryExec=sublime_text
Exec=sublime_text %F
Icon=/usr/share/icons/sublime.png
MimeType=text/plain;

Y lo copiamos al directorio /usr/share/applications/:

sudo cp sublime.desktop /usr/share/applications/

Y listo. Si pulsamos la tecla de Windows de nuestro teclado (en Unity), el resultado debe ser algo parecido a esto:

Etiquetas: , , , , ,

Atajos de teclado útiles en Netbeans para PHP

Netbeans es mi IDE de desarrollo favorito cuando estoy programando en PHP. Podemos mejorar nuestra productividad utilizando Netbeans haciendo uso de sus numerosos atajos de teclado que nos facilitará el trabajo. Aunque sé que hay bastantes más (y por supuesto para otros lenguajes), voy a intentar enumerar los más útiles que conozco. Si vosotros conocéis alguno más, no dudéis en escribir un comentario y lo añadiré al post.

  • [CTRL] + [SPACE] : Completa el código que estamos escribiendo. Por ejemplo, si queremos escribir LocateRegistry solamente escribimos Loc y presionamos el atajo para que nos sugiera la palabra completa. Si presionamos dos veces el atajo, muestra todas las opciones que comiencen con los caracteres escritos.
  • [ALT] + [INSERT] : Agrega constructores, métodos accesores, propiedaes, overrides, etc..
  • [ALT] + [ENTER] : Se usa sobre el texto subrayado para ver la sugerencia que nos hace el IDE cuando hay algún error de sintaxis o se necesita realizar algun import o surround
  • [CTRL] + [R]: Si lo hacemos sobre el identificador, renombra todas las ocurrencias.
  • Generador de documentación PHPDoc: Si posicionamos el cursor en la línea anterior donde empieza la declaración de la función, escribimos /** y pulsamos [ENTER], automáticamente se nos generará la documentación PHPDoc de esa función.
  • [ALT]+[SHIFT]+F : Tabula el código automáticamente.
  • [SHIFT]+[ESC] : Maximiza o minimiza la ventana donde tecleamos el codigo.
  • [CTRL]+B ó [CTRL]+(click) : Nos abre el archivo donde se encuentra la declaración de la variable/funcion/clase.
  • [CTRL]+[TAB] : Lista de los archivos que tenemos abierto para cambiar de uno a otro rápidamente.
  • [CTRL]+[SHIFT]+UP ó [CTRL]+[SHIFT]+DOWN : Copia la linea en la que estamos en la fila superior o inferior.
  • [ALT]+[SHIFT]+UP ó [ALT]+[SHIFT]+DOWN : Moveremos la línea en la que nos encontramos hacia arriba o hacia abajo.
  • [CTRL]+E : Borra la línea en la que estamos.
  • [CTRL]+[SHIFT]+C : Comenta la línea actual. Si hacemos una selección, comentará todo el código seleccionado.
  • [CTRL]+R : Renombramos una variable/función/clase y hace el cambio automáticamente en el resto del código (MUY útil).

Vamos a ver a continuación unos atajos para escribir código mucho más rápido con Netbeans. Tan solo tendremos que escribir la primera palabra que se indica y pulsar la tecla del tabulador.

  • fore + [TAB] : Genera un bucle foreach típico.
    foreach ($array as $value) {
     
    }
  • forek + [TAB] : Nos generará un bucle foreach, extrayendo también la clave del array.
    foreach ($array as $key => $value) {
     
    }
  • if + [TAB] : Autocompleta el código de un bloque if.
    if (true) {
     
    }
  • swi + [TAB] : Genera un bloque switch.
    switch ($categoriesLlistat) {
        case $value:
     
            break;
        default:
     
            break;
    }
  • while + [TAB] : Escribirá automáticamente un bucle while.
    while (true) {
     
    }
  • my_fa + [TAB] : Genera un bucle while, extrayendo los datos de una consulta mysql en forma de array.
    while ($row = mysql_fetch_array($query)) {
     
    }
  • my_fo + [TAB] : Genera un bucle while, extrayendo los datos de una consulta mysql en forma de objeto.
    while ($row = mysql_fetch_object($query)) {
     
    }
  • my_fr + [TAB] : Genera un bucle while, extrayendo los datos de una consulta mysql en forma de filas.
    while ($row = mysql_fetch_row($query)) {
     
    }

También se pueden generar atajos de código definidos por nosotros mismos. Ese es un tema que da para otro post :)

Etiquetas: , , , , , ,