London Thames, fotografía por @ramono

Todos hemos visto una oferta de trabajo así en algún momento:

Se solicita programador web con 15 años de experiencia, experto en HTML, CSS, Javascript, PHP, Ruby on Rails, NodeJS, .NET, C++, MySQL, PostgreSQL, Oracle, NoSQL, configuración de servidores, conocimientos de diseño gráfico y caligrafía. Ser barista es un bonus. Salario a convenir (el mínimo posible), algunos beneficios de ley (porque nos obligan).

Como un desarrollador de tan sólo 20 años buscando mi primer empleo fijo, este tipo de ofertas me deprimía bastante: me consideraba buen programador y que tenía conocimientos acordes ¡Sin embargo siempre cumplía con la mitad de los requisitos indispensables! Además yo sólo se preparar café americano. ¿Pero saben qué es lo curioso? Después de más de 10 años ¡Aún no cumplo con esos requisitos!

De hecho si ves mi perfil en Twitter, leerás lo siguiente:

Programador y profesor de PHP y Laravel. Creador de 

(Por cierto, sígueme en Twitter)

Sí, por supuesto yo se escribir HTML y CSS, también puedo configurar un servidor si me lo propongo, pero si tienes una compañía seria, ¿No deberías contratar a un experto en desarrollo front-end para maquetar el proyecto, un experto en servidores para configurar y mantener el servidor y dejar al backend developer trabajando en el backend?

Imagina que una clínica publicase el siguiente anuncio:

Se solicita medico internista experto en gastroenterología, otorrinolaringología, anestesiología, traumatología y ginecoobstetricia. Saber cómo administrar la clínica y disposición para atender el cafetin en sus horas libres, es un bonus.

Totalmente risible, ¿Cierto? Por supuesto ningún médico atendería a esta propuesta. Pero ¿Por qué a los programadores nos hacen esto?

Muy probablemente por desconocimiento, verás quien escribe esas propuestas probablemente no tenga ni idea de cómo escribir un «hola mundo».

Lo voy a decir de manera clara:

Es imposible aprender y estar al día con todas las tecnologías que existen.

Aún si te lo propones y comienzas hoy a aprender frontend, y luego backend, y luego base de datos y luego administración de servidores, cuando termines te darás cuenta que tendrás un conocimiento general de cada una de estas tecnologías, lo cuál no está mal, pero no serás experto ni profesional en ninguna de ellas y no tendrás el perfil necesario para aplicar a los mejores trabajos.

Estamos muy lejos del año 2000 donde en un par de semanas aprendíamos lo necesario de HTML, CSS, PHP, MySQL y cómo subir nuestro sitio por FTP. Si hoy comienzas con CSS luego te darás cuenta que deberías aprender a usar un pre-procesador, pero eso tampoco es suficiente, necesitas aprender las mejores prácticas de diseño responsive, JavaScript, un sistema para automatizar tareas como Gulp y me estoy quedando corto…

Si te vas por la parte de backend necesitarás aprender un lenguaje (como PHP) y un framework (como Laravel), pero también necesitas aprender programación orientada a objetos, patrones de diseño, base de datos (por supuesto), pruebas unitarias y de integración, y un largo etc.

Oh y sin contar que cada 6 meses hay nuevas versiones de todas estas tecnologías ¿Es posible mantenerse al día con todas las ramas de este gran árbol tecnológico? No. ¿Qué hacer entonces? Elige una rama y especialízate.

¿Cómo optar por los mejores trabajos como desarrollador?

Hace unas semanas una programadora que ahora vive en Australia y compró una membresía anual en Styde.net, me comentó que tiene un gran interés en convertirse en un desarrollador senior de Laravel PHP para poder optar a trabajos como estos, que pagan hasta 100 mil dólares al año por desarrollar con Laravel.

Los mejores trabajos no son como la oferta que publiqué al principio del post, los verdaderos directores de desarrollo son como tú y saben que es imposible ser experto en todo y por ende buscan especialistas, ya sea en backend, en frontend, en administración de servidores o base de datos, diseño, UX, ventas, etc.

Todo el tiempo te dicen que en promedio los programadores de Ruby y de Python ganan más que los programadores de PHP, y esto es cierto y siempre va a ser cierto ¿Por qué? Porque los programadores de PHP somos mayoría y es muy fácil aprender PHP y encontrar un trabajo sencillo como por ejemplo editar una página en WordPress. Pero también es cierto que un programador senior de PHP va a ganar mucho más que un programador junior de Ruby. ¿Ves a donde quiero llegar con esto?

No importa tanto el lenguaje o rama que elijas sino lo mucho que seas capaz de especializarte en ella.

11 consejos para optar por los mejores trabajos de programación

En las últimas semanas he estado mirando páginas de empleo (no te preocupes, yo quiero seguir dedicándome a Styde), pero pensé que a ti te sería útil esta información:

1. Git y GitHub

En prácticamente todos los trabajos exigen manejo de control de versiones (generalmente Git), pero además, en muchísimos trabajos te exigen el enlace a tu perfil de GitHub, algunos te piden de 2 a 3 años de antigüedad en la plataforma.

2. Stack Overflow

Hace poco leí una broma que decía que el título de «Ingeniero en Computación» se iba a renombrar a «Googlear Stack Overflow».

Lo cierto es que en las mejores ofertas laborales, muy probablemente te pedirán tu perfil en Stack Overflow y que tengas al menos 500 o 1000 puntos. Quien diría que ayudar a otros es una manera de ayudarte a ti mismo.

3. Manejo de inglés

Las mejores oportunidades de trabajo están en países de habla inglesa. Aprender inglés es esencial para ser un gran programador.

4. Desarrollar componentes:

¿Qué mejor manera de demostrar que eres un excelente desarrollador en tu área que creando tus propios componentes?

5. Pruebas unitarias y de integración:

Los mejores desarrolladores escriben código para probar sus aplicaciones.

6. Programación orientada a objetos y patrones de diseño:

Aprender los conceptos de la programación orientada a objetos y patrones de diseño es muy importante para crear aplicaciones profesionales (y optar por mejores empleos y proyectos).

7. Sitio personal:

¿Eres experto en tecnología, y tu manera de demostrarlo es un archivo .doc? Necesitas crear un sitio personal, así sean sólo un par de páginas. Por ejemplo dale un vistazo al sitio web de mi colega Ramón.

8. Cover letter

Una manera de demostrar que estás realmente interesado en un trabajo es crear un mini sitio que sirva como «carta de presentación» exclusiva a la empresa a la cuál te estás postulando. Aquí tienes un par de ejemplos: Jason para 37sinals, Adam para Tighten. Aquí puedes leer un post completo sobre el tema: Cover letters (en inglés).

9. Hazte conocer:

Participa en comunidades, utiliza las redes sociales para compartir lo que te gusta: el desarrollo web ¿Cierto? Hay muchos empleadores y posibles clientes que van a buscarte en Google, por ello 3 consejos:

  1. Cuida la información que compartes públicamente
  2. Haz que sea innegable reconocer que te apasiona lo que haces
  3. Utiliza una variante de tu nombre como nickname o si vas a tener un nickname, elige uno solo y quédate con él, ya de por sí es difícil que alguien se aprenda tu nombre, usar todas las variantes posibles de tu nombre + 5 nicknames diferentes lo hace imposible.

10. Ordena tus finanzas:

¿Has oído que no debes ir al supermercado con el estómago vacío? lo mismo sucede al buscar trabajo: procura que nunca te «urja» aceptar cualquier oferta de trabajo, así tendras la paciencia para aceptar solo la que realmente te convenga. (Gracias a @JavierDaniel por este tip).

11. Cada solicitud es diferente.

Por supuesto cada trabajo tiene sus requisitos y particularidades, pero estos puntos son bastante comunes y me atrevo a decir que lo son no sólo para PHP sino también para otras tecnologías.

¿Cómo puedo convertirme en un desarrollador backend de PHP y Laravel?

Como podrás darte cuenta en Stydenet más que darte conocimientos generales, estamos trabajando arduamente para ayudarte a especializarte en un área y que puedas competir con otros desarrolladores para optar por trabajos increíbles.

¿Qué puedo hacer para acelerar el proceso de convertirme en un desarrollador senior?

  • Crea una cuenta en GitHub (si no la tienes) y comienza a usarla.
  • Crea tu página personal, perfil de Linkedin, enfoca tu participación en las redes sociales más hacia tu profesión.
  • Documenta lo aprendido, comparte, ayuda a otros, es una gran forma de aprender más y darte a conocer.

Es un trabajo arduo, no hay fórmulas ni cursos ni programas mágicos que te harán profesional de la noche a la mañana, piensa: si todos pudieran hacerlo enseguida no habrían ofertas de tal magnitud, pero perseverando, estudiando y trabajando un poco cada día, en menos de lo que esperas estarás releyendo este post, en ese trabajo que siempre soñaste y exclamarás ¡Lo logré!

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.