Focaliza, prevé, avanza y analiza tus pasitos.
Mar/1010
Casi todos los proyectos nacen de una idea básica, una idea breve, sencilla de no más de dos o tres lineas que vienen a cubrir una necesidad o una falta, algo que nosotros creemos que es necesario y que no hay en el mercado. Simplemente algo en lo que creemos.
Una vez decidida la idea, es cuando empezamos a emocionarnos con ella, a hacerla más grande, a pensar en ella todo el día, a esa idea de unas dos o tres lineas le vamos añadiendo anexos, ideas paralelas, nuevas vías de acción similares que pueden encajar en el proyecto… En definitiva, vamos pasando de las dos lineas al párrafo, y del párrafo a las 2 hojas.
En este momento, creemos que la idea es tan buena, vemos tantas opciones de rentabilizarla y tantas funcionalidades distintas que creemos que ha llegado el momento de llevarla a un desarrollador que la haga realidad, nos plantamos delante de él y soltamos todo lo que queremos. Esas cinco hojas llenas de ideas y garabatos que no paramos de hacer que crezca cada día un poco más llegan con el mismo peso al programador que coge el maremágnum como buenamente puede y saca un pequeño análisis del proyecto donde se incluyen todas las ideas al mismo nivel.
Pero nosotros estamos ansiosos, es nuestra idea, nuestro niño, y no dejamos de darle vueltas al mismo asunto, una y otra vez, día y noche. Y a la semana de entregar el proyecto a la empresa de programación ya les estamos llamando pidiendo que añadan tal y tal otra funcionalidad que vemos más que necesaria y obligatoria para salir a producción y la empresa de programación lo más que puede hacer es aceptar lo que dice el cliente, ampliar plazos (en el mejor de los casos) y tirar adelante como puede para hacer frente a todo lo que se avecina.
Y así más de una y dos veces, y al final, una vez que recibes el trabajo, con dos o tres meses de retraso y un montón de dinero de más gastado, te encuentras con que tu proyecto, tu idea, aquello que ocupaba dos lineas y tanto te gustaba, se ha convertido en una auténtica y estrambótica nave espacial que ni tu mismo entiendes, a la que te da miedo acercarte y de la que no ves más que un futuro oscuro…
Y ¿dónde ha estado el error? ¿Cómo se podría solucionar esto? ¿Qué se puede hacer?
Fácil, siguiendo unas simples pautas que harán todo más fácil:
- Focaliza – No pierdas nunca el horizonte, esas dos lineas son tu tantra y deberías repetirlo todas las mañanas, imprimelo si es necesario y ponlo en la pared de tu despacho. Es tu objetivo y no deberías olvidarlo nunca!
- Prevé – Piensa en todo lo que querrías que tuviera tu idea, y todas las alternativas que ves interesantes en un futuro, crea un roadmap y ponlas todas en él en función de la necesidad, pero se realmente crítico y nunca las mezcles con la idea original.
- Avanza – Es mejor sacar un germen en 5 días y verlo crecer en 5 años, que sacar un árbol en 5 años y verlo morir en 5 días por no arraigar. Así que adelante, no tengas miedo, crea algo rápido y casi sin funcionalidad, algo que cumpla tu idea de 2 lineas ya tendrás tiempo después para verlo crecer pasito a pasito.
- Analiza tus pasitos – Y sobretodo analiza tus pasitos, comprueba si realmente es útil la idea, si el nuevo anexo funciona como esperabas o hay que obviarlo, mira que resultados da cada cosa que haces y comprueba si realmente con ese cambio has dado en el clavo o no, da otro pasito más y vuelve a comprobar todo una y otra vez, a la larga esto te ahorrará más costes que hacerlo todo de cero.
Nota: Este post tenía pensado ponerlo en loogic como continuación de los dos post anteriores (Cerdo o Gallina. El puesto de consultor tecnológico y El Usuario segmentado como fuente principal de ingresos), pero como tengo un poco abandonado mi propio blog, he decidido, aun a riesgo de perder audiencia, dejarlo aquí.
Oferta de empleo. Programador PHP Junior.
Mar/101
Hace unos meses escribía sobre como pondría yo un anuncio buscando programador Junior. Un poco después comentaba la cantidad de proyectos en los que estoy metido. En aquella época llegó a mi un grandisimo compañero, una persona que dejó un trabajo fijo para arriesgarse a mi lado y aprender lo poco que yo le pueda ofrecer, así que mi primer gracias para José Villalobos. Ahora veo que el trabajo sigue creciendo y que nosotros dos solos no damos a basto, así que me alegra comentar que volvemos a abrir la oferta de trabajo.
Solo que esta vez la oferta es algo más seria, así que allá vamos.
Programador Web Junior
| Fecha de la oferta: | 03-03-2010 |
| Nombre de la empresa: | En vías de formalizar la SL |
Ubicación
| Población: | Madrid (Tetuan). |
| Provincia: | Madrid. |
| País: | España. |
Descripción
| Puesto vacante: | Programador Web Junior |
| Categorías: | Informática y telecomunicaciones – Administración de bases de datos |
| Nivel: | Junior (no se requiere experiencia previa, aunque si conocimientos básicos) |
| Personal a cargo: | Ninguna |
| Número de vacantes: | 2 |
| Descripción de la oferta: | Actualmente nos encontramos en el proceso de creación de una empresa basada en el desarrollo web avanzado, es decir, en crear proyectos donde la calidad sea el máximo exponente. El número de clientes interesados en esta idea no es bajo y por lo tanto necesitamos gente con ganas de aprender y avanzar con nosotros.
Buscamos gente joven para el puesto vacante de Programador Web Junior, no se requieren experiencia previa en puestos de programación (aunque serán valorados) sino ganas de aprender y avanzar en un sector con bastante share de mercado, nosotros te damos los medios y la formación, tu nos traes tu personalidad e interés. |
Requisitos
| Estudios mínimos: | Indiferente – Aunque preferiblemente gente en últimos años de carrera informática o recién licenciados. |
| Experiencia mínima: | Si tienes más de 2 años de experiencia posiblemente esta oferta no sea para ti |
| Requisitos mínimos: |
|
| Requisitos deseados: |
|
Contrato
| Tipo de contrato: | Autónomo dependiente (contrato indefinido)
Nuestra asesoría se podrá encargar gratuitamente de todos los trámites, tanto de alta como mensuales/trimestrales. |
| Jornada laboral: | Flexible (puedes querer intensiva, flexible para compaginar con estudios o como quieras… Creo que el tener horario fijo más que ayudar entorpece en estos casos) |
| Horario: | Abrimos a las 8 cerramos a las 20, dentro de esa franja cuando quieras |
Salario
| Salario: | 1.000 € – 1.400 € Bruto/mes + IVA (se hará factura mensual) |
Todas las personas que estén interesadas en el puesto vacante, solo tienen que mandar un correo a alquesada AT gmail DOT com contando un poco tu experiencia y tus inquietudes o intereses y adjuntando tu CV.
PS: Este proceso lleva activo ya un tiempo, si ya me enviaste tu CV no hace falta que lo reenvíes, porque tengo en cuenta el anterior.
Y otro pasito más
Mar/103
Y ya van unos cuantos.
Primero fue independizarse, conseguir los primeros clientes, los primeros encontronazos con ellos, con tus propios socios y sobretodo conseguir subsistir.
Después del bache llegó el primer pico, un montón de curro y la necesidad de requerir la ayuda de alguien a mi cargo con el que repartir curro, responsabilidades, alegrías y risas.
Ahora vamos un pasito más allá y salimos del despacho de casa a unas oficinas compartirdas. Mis primeras oficinas!!
Desde aquí quiero agradecer a la gente de Okuri por el esfuerzo que han hecho para poder cedernos un trocito de sus oficinas en TetuanValley bajo unas condiciones realmente excepcionales a las que era imposible negarse.
Para quien no conozca Okuri os diré que posiblemente sea la incubadora de proyectos 2.0 más humana que os encontréis en todo el territorio español, especializada en lanzar empresas, asesoría de negocio consultoría capitalizada y sobretodo formación, mucha formación!
Para quien no conozca TetuanValley igual os interesaría leer su propio manifiesto e igual os interesa saber que están en contacto con un chiquito muy apañado (un greñillas, eso si) que les va a echar un cable, como mentor tecnológico, en la segunda edición de los cursos de TetuanValley; nos vemos en el Tetuan Valley Startup School Spring 2010
Y si queréis inscribiros en los cursillos, aquí tenéis el formulario de inscripción
Pasito a pasito no vamos abriendo caminito.
Y si queréis unas fotitos, aquí tenéis:
Recordándoos
Feb/1010
Agotado, casi sin fuerzas y con la pierna destrozada1 aprovecho que el móvil se quedó sin batería hace un rato para escribir estas lineas mientras espero el tren que me lleva a mi casita.
En estas dos semanas he sumado unos cuantos miles de quilometros a mi espalda, he conocido y me han conocido personas muy especiales, tanto a nivel personal como profesional. He disfrutado y reido, he trabajado a destajo, aprendido y apenas he dormido.
Empezamos el martes 16 de Febrero con un viaje en tren a Bilbao, eventosfera pedía una reunión a gritos de los 3 socios y así lo intentamos.
Aprovechamos el viaje para visitar Santander y asistir a Iniciador Cantabria. De la mano de Rosa Poo pudimos entablar conversación con Berto Pena y llevarnos de regalo su libro dedicado2, una cena de lujo y una próxima comida pendiente con Berto y Javier Martín en Madrid.
Esa noche apenas dormimos 3 horas, nos tocó recuperar el tiempo perdido y los trabajos pendientes. Y con apenas unas horas de sueño pudimos sentarnos los socios de eventosfera y planear el futuro a corto plazo. Después desde Santander avión de vuelta a Madrid y a intentar recuperar más tiempo perdido.
Cinco días por medio, de estrés, reuniones y trabajo, trabajo, trabajo para volver a coger la maleta y meterme en un bus dirección a Talavera de la Reina, tocaba estrenarme (y estrenarnos) como coorganizador de Iniciador Toledo/Talavera. Quedaban pocas horas y muchas cosas pendientes por cerrar antes de recibir al ponente de lujo con el que contabamos para el primer iniciador; el padre de internet en España, Rodolfo Carpintier (muchas gracias por todo! un autentico placer contar con tu presencia)
El evento debio ser un éxito, pues no hemos tenido malas criticas y si mucha presencia, aunque de forma “velada”, en los medios regionales. El mayor fallo fue el no grabar el streaming improvisado que tuvimos, me hubiera gustado verme atacado de nervios y pasandolas canutas en algunos momentos… Ya será en el siguiente!
Después de los nervios y el networking pudimos cenar con los amigos3 y disfrutar de una noche de risas (ri- sas-), relajación y cubatas.
Esta mañana y tras pocas horas de sueño, nos hemos ido al tercer evento en menos de 15 días y el quinto en lo que llevamos de mes, el #eatsAndTwitts Madrid.
La verdad es que han sido unas horas de felicidad, risas, relax y abrazos, sobretodo abrazos. Donde he tenido la extraña sensación de abrazar y conocer a gente que ya quería y conocía. Y también de echar de menos a gente que apenás conozco y que ya se que quiero mucho. La magia de twitter se vive al ciento diez por cien en el #eatsAndTwitts sin lugar a dudas!
Todo esto me ha hecho pensar y encender la mecha para volver a ponerme las pilas. Me ha servido para humanizar a gurús4 y para darme ánimos a mi mismo en mis proyectos.
Ahora toca reflexionar sobretodo esto y aprovecharlo al máximo… Pero esto ya lo contaré en otro post.
Mientras tanto muchas gracias a todXs los que os habéis cruzado o twittercruzado conmigo estos días!!!
@eventosfera, @elenamui, @JulioUsandizaga, @rosapoo (la grandisima Rosa Poo!), @mr_villa, @aartiles24, @bertop, @jzabalo, @loogic, @RCarpintier, @marta_rruiz, @milrayas, @mausant, @luisso, @cuasante @begonamiguel, @patriciaaraque, @perezsusana, @designtock, @estudiodos, @luisriverag, @tetuanValley y @abarrera entre tantos otros!!!
También agradecer a nuestra @comunicatelo, la alegría de Iniciador Toledo! @erodrigo, @sorprendida y @fmlopez48 porque con un abrazo me habéis demostrado más amistad que la que dan mil palabras, que ganas tenía de conoceros! Y a mi gran ausente, la loca más cariñosa de todo Oslo, @elenaenriquez.
Y sobretodo a la que es mi otra pata, @javimonsalupe y nuestras dos respectivas mitades, que nos soportan, nos aguantan y nos quieren! Y sin las que no seríamos nada @bearufo y mi niña, @cyn_cv.
Cerrando filas.
Ene/105
Como ya sabréis mi vida en el último año a dado un giro radical. De pasar de escuchar a ser escuchado, de subsistir a crear.
Han sido unos meses duros, con algún que otro batacazo y alguna que otra decepción, pero también han sido buenos meses, donde he aprendido, compartido y sobretodo evolucionado. Donde me he forzado (y me esfuerzo) en mejorar mis puntos flojos; la organización, el avanzar y no estancarse y sobretodo mantener el horario cuando no había ningún motivo para salir de la cama1.
Y todo esto parece que empieza a dar sus frutos, he pasado de asalariado a “asalariar“, de “malescribir” en este, mi tercer blog2, a estar invitado a escribir para Loogic3 y para 120% Linux 4 y de visitar de vez en cuando Iniciador Madrid a organizar Iniciador Toledo, la verdad es que es de agradecer ver como el esfuerzo si tiene recompensa.
Claro, no me puedo olvidar de mi querida eventosfera, ese gran proyecto al que he sido invitado a colaborar como socio, supongo que cumpliendo las labores de CTO del mismo. Pasará tiempo hasta que se me olvide la genial sensación que me dejo cierta llamada telefónica con Ana, la socia fundadora y alma máter del proyecto, junto con Javier, la tercera porción del quesito.
A esto además tengo que sumar unos cuantos proyectos grandecitos para diferentes clientes que hacen que sin cumplir el primer mes del año, tengamos cubiertas las expectativas de, al menos, la mitad de este.
Pero llega el momento de tomar una decisión, por un lado, en breve reabriré la empresa5 y esto llevará un tiempo extra, por el otro, recientemente tuve que coger a un junior para trabajar conmigo y poder doblar trabajos y ahora que volvemos a estar al 90% de capacidades llega la duda, “desdoblar” de nuevo y coger a otro empleado que pueda acaparar los nuevos proyectos que llaman a la puerta o cerrar filas en torno a lo que tenemos, afianzar los pilares de este gran proyecto y avanzar con más calma…
Así que así estamos, y creo que la solución en este caso está clara, si el objetivo es vender calidad podemos decir con tranquilidad que ha llegado el momento en el que ampliar capital está por debajo de afianzar las bases y crear calidad. Por lo que hasta nueva orden, nos recluiremos, trabajaremos como locos, crearemos una marca sobre la que estar orgullosos de participar y disfrutaremos como enanos haciendo lo que más nos gusta. Crear proyectos webs avanzados.
[Actualización]: Ayer, el gran Alex Barrera (aka @abarrera) me echó la ‘bronca‘ por no mencionar otro de los tantos ‘fregaos‘ en los que ando metido, esta vez como ‘colaborador tecnológico6‘ en TetuanValley un proyecto que recomiendo a todo aquel que empiece a emprender y que tenga ganas de lanzar su Startup al mercado.Para la primera promoción del Tetuan Valley Startup School mi participación fue meramente de oyente y poco más, pero para las siguiente, espero poder participar mucho más y ayudar en lo que pueda a las ‘nuevas generaciones‘… Así que ya sabéis, estar atentos a la siguente promoción del Tetuan Valley Startup School
- No diré que ha sido fácil, ni difícil. Simplemente así ha sido. ↩
- Los otros dos fueron: http://g05l21.bitacoras.com/ y http://g05l21.net/ ↩
- El enlace al artículo: http://loogic.com/cerdo-o-gallina-el-puesto-de-consultor-tecnologico/ ↩
- El artículo saldrá en breve, mientras: http://120linux.com/ ↩
- Esta vez sin socios “no-capitalistas” ↩
- Por decirlo de alguna manera ↩
Manifiesto «En defensa de los derechos fundamentales en internet»
Dic/092

Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…
1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia
Léelo, pásalo, cópialo, compártelo
Foto: Palagret
Texto vía: Marilink
Resumen de noviembre
Dic/094
Bueno, sin apenas mucho tiempo para escribir nuevos artículos más extensos y complejos, voy a poner un micro resumen de la situación actual.
Se podría decir que la última quincena de este mes a sido más productiva que incluso, me atrevería ha decir, todo el resto del año. He conocido a mi nuevo sobrino1, he podido desvirtualizar a muchísimos amigos y algún que otro gran amigo, he vuelvo a poner en práctica mis “dotes” de jefe de proyecto2, he cerrado algún que otro trato interesante y he tenido una de esas maravillosas conversaciones por teléfono, de las que una vez cuelgas sientes que algo grande a pasado.
He podido asistir a varios de los eventos que tenía listados (y algún otro que apareció en el momento), me encantaría hablar más detalladamente de ellos, pero la falta de tiempo me lo impide, así que una reseña sería:
- El 11, después de mucho tiempo reaparecí por @iniciador_mad para oír en persona a la gran @anamariallopis. Allí pude desvirtualizar a una grandísima persona, @javimonsalupe, de la que me queda muchisimo por aprender y mucho más por colaborar . También tuve el placer de conocer a tantos otros, entre ellos a @ignacioinventa, @wlappe, @patriciaarque (con la que apenas crucé dos palabras, aunque después me haya cansado de hablar con ella) y los chicos de @tetuanvalley y sus proyectos. Geniales todos chicos! Mucho ánimo!
- Después de eso, una semana desaparecido de la tierra ayudando a mi hermana en Melilla hizo que me perdiera el @ebe09 y el first tuesday. Pero la experiencia de tener a un bebe de 2 meses en tus brazos llorando a las 7 de la mañana merece la pena ¬¬
- Volví justo el 19 para desaparecer literalmente todo el fin de semana en el @iweekend de Madrid. La verdad es que la experiencia aunque agotadora -más de 30 horas para sacar una Startup, pelearte con todos y hacer un poco de jefe caótico de proyecto- es, creo que cuando menos necesaria. Allí desvirtualicé a muchisima gente, sobretodo a @Ydral, @pabloalmunia, @cuasante y a las @ellas2, bravo por vuestra filosofía chicas! y a todo el pedazo de grupo de desarrollo, que menudo curro se metieron!
- El 24 acabé con el último evento del mes. El #eatandtwitts con el maravilloso regalo de un poken cortesía de @luisblas y muchisimas más desvirtualizaciones (@mercados – con quien tuve una muy amena charla sobre bolsa -, @2peoplelikethis, @leoborj, @comunicatelo, @Paula_Sanchez, …) Acabamos el evento como se debe hacer, con muchos cubatas, muchas cervezas y camino a otro evento, esta vez el party&co del grupo @bestrelations, genial actuación chicos!! – y gracias por el party&co que tengo en casa!
Esto es un esbozo de la parte social… Hay muchos nombres y cosas que no cuento, pero con los que igualmente me lo pasé genial!
En la parte laboral, pues digamos que estoy, por suerte o desagracia, teniendo que decir a nuevos proyectos que no por falta de tiempo3
- Proyectos personales, pues aquí como siempre con mil y un proyectos, pero bueno, una vez cambiadas las prioridades diré que tengo:
- 2 Proyectos activos. Uno son mis librerías de uso, a ver si soy capaz de dejarlas medianamente listas para poder sacarlas al público, aunque gracias al @iweekend comprendí de lo que adolecen; de documentación! (Lo mismo de lo que yo me quejo con ZF). El otro es un proyecto personal que espero que vea la luz pronto (Enero – Febrero ‘10) del que por ahora poco puedo decir
- 2 Proyectos en StandBy. A los cuales me gustaría dedicar más tiempo, pero por ahora están congelados. Uno es baq.be para el cual necesitaría tiempo para implementar los cambios que ya están analizados. El otro proyecto, aunque todavía no está ni analizado, espero poder ponerme con el cuanto antes. Sobretodo gracias a la ayuda de varios amables voluntarios (muchas gracias creativos!!!) que me están dando muchas ideas y ánimos para ello.
- 2 Proyectos completamente congelados. Con los que algún día me pondré, no son gran cosa, ni serán revolucionarios, pero siempre apetece tener cositas que dan dinero (aunque poco) sin esfuerzo, no?
- 1 Proyecto nuevo. Esta idea no tiene ni dos horas de vida, pero espero cerrar el concepto, cuadrar los números y ponerla en funcionamiento para Enero – Febrero ‘10 también
- Proyectos que doy por mios,
- emprendemas.com. El hijo del @iweekend y con el que estoy comprometido, por lo menos, a sacar una beta estable y funcional en colaboración con el resto de desarrolladores.
- eventosfera. Quien no pensaría en ayudar a Ana en este proyecto después de hablar con ella? Pues en eso estamos, un lavado completo de cara y sobretodo muchas facilidades de uso para gestionar todos los eventos que abarca actualmente.
- A parte de esta ristra, que no es pequeña, tengo un proyecto grande (sobretodo en cuanto a programación) que espero vea la luz en Abril – Mayo ‘10 y muchos “proyectitos” que ayudan a dar de comer a este humilde currito. Intentaré ir poniéndolos por aquí según vayan saliendo, y un ejemplo puede ser la adaptación a Drupal del site de GTO Europe y sus posteriores cambios de diseño (estamos en ello).
Así que como veis, el tiempo no me sobra precisamente estos días, pero las novedades no son pocas. Como se suele decir, cuanto más cosas te pasan, menos ganas/tiempo tienes para escribir sobre ellas!
Lo que se pide, lo que se paga, lo que se obtiene (segunda parte)
Nov/093
Bueno, no tenía intención de escribir más sobre el asunto, con el anterior post ya me explayé bastante, pero una larga conversación con un empresario y amigo y otra “twit-conversación” a raíz de una oferta de empleo (menos en el blog, en cualquier lado) me hacen volver al tema a intentar clarificar una vez más mi punto de vista.
Por lo que veo, en la mayoría de los casos, el empresario se escusa bajo el paraguas de “yo lo que busco es gente de calidad, hay casos de Seniors sin calidad y Juniors con mucha” y esto sigue siendo el mismo error de siempre. Señores, a ver si queda un poco más claro, por mucha calidad que pueda tener un Junior Developer, nunca puedes ponerlo a llevar un proyecto o a realizar desarrollos de Análisis funcional porque no le habéis contratado para eso, porque no tiene experiencia y porque igual sale bien, pero con mayor seguridad saldrá mal!
Traspasemos esto a un colegio, en el cual de 100 alumnos por curso hay uno que es superdotado. Después de mucho discutir con la familia se le decide, debido a su nivel, pasarle un curso por encima de los de su clase, el niño puede que sufra estrés por el cambio y el nuevo nivel pero lo podrá hasta controlar. Pero, que pasaría si le subiese de 1º a 5º?? Creéis alguno que realmente podría hacer bien el curso?? Ojo! Que no digo que no aprobase alguna, ni que dejase de ser aplicado, simplemente que el nivel que se le exigiría sería muy superior a sus conocimientos y lo único que obtendría serían lagunas de conocimientos.
Pues aquí es igual, un Junior es una persona sin conocimientos o con conocimientos básicos sobre la materia, si intentáis que haga el trabajo de una persona con cierto bagaje profesional, pues puede que os salga bien el proyecto, puede que si el proyecto no tiene una gran envergadura o calado social hasta no veáis nunca problemas o puede que realmente ese Junior sea del pequeño tanto por ciento de superdotados1 capaces de llegar a 5º sin problemas y os haga el trabajo de forma correcta. Pero la probabilidad de fiasco al intentarlo no será poca, ya os advierto. Y vendrán los problemas por trabajos mal hechos, trabajos en los que la escalabilidad y el análisis sean malos, etc. Y empezaréis a cortar cabezas y la primera será la del pobre Junior que contratasteis para hacer la labor de Senior Analyst.
Solución: Bueno las soluciones son varias y dependen casi siempre del mismo asunto, el dinero, pero todas acaban siempre en lo mismo, evitar que vuestros empleados realicen labores dos o más niveles por encima de por lo que los habéis contratado, crear para cada rama de la empresa una estructura lo más completa posible (ya sea externalizando o inhouse) y molestaros siempre de formar a los empleados dentro de la empresa.
Tener siempre en cuenta que para una empresa, lo más importante por mucho que la gente no quiera verlo, no son los clientes o los ingresos, son los empleados!
Y por último, un borrador de como pondría yo una propuesta para Junior2.
Programador Web Junior
| Fecha de la oferta: | 12-11-2009 |
| Nombre de la empresa: | Mas quisiera tener nombre SL |
Ubicación
| Población: | En mi casita todo el día. |
| Provincia: | Madrid |
| País: | España |
Descripción
| Puesto vacante: | Programador Web Junior | |
| Categorías: |
|
|
| Nivel: | Junior (no se si existe, sino especialista) | |
| Personal a cargo: | Ninguna!? | |
| Número de vacantes: | 1 | |
| Descripción de la oferta: | Sino habéis explicado que es vuestra empresa antes, hacerlo aquí, pero brevemente. Tener en cuenta que la oferta no es solo en un sentido, sino que vosotros también tenéis que ofertaros bien y sobretodo siendo sinceros! Buscamos gente joven para puesto vacante de Programador Web Junior, no se requieren conocimientos previos de programación (aunque serán valorados) sino ganas de aprender y avanzar en un sector con bastante share de mercado, nosotros te damos los medios y la formación, tu nos traes tu personalidad. Queremos gente abierta, con ganas de trabajar y emprender, con ideas propias y capacidad para discutirlas, si te consideras una persona proactiva estaremos encantados de hablar contigo. Que ofrecemos, un espacio de trabajo abierto y flexible donde poder aprender y trabajar sin problemas. Mucha formación y muchas posibilidades reales de promoción interna. Hoy tu eres el que aprende, mañana igual seas el que enseñe. |
Requisitos
| Estudios mínimos: | Indiferente – aunque personalmente me gustaría decir “gente cursando últimos años de carrera” ya que son los que más ganas de comerse el mundo tienen. |
| Experiencia mínima: | Si tienes más de 2 años de experiencia posiblemente esta oferta no sea para ti |
| Requisitos mínimos: |
|
| Requisitos deseados: |
|
Contrato
| Tipo de contrato: | Indefinido con Xmeses de prueba (algo que no se suele decir, pero que también creo que es importante) |
| Jornada laboral: | Flexible (puedes querer intensiva, flexible para compaginar con estudios o como quieras… Creo que el tener horario fijo más que ayudar entorpece en estos casos) |
| Horario: | Si dejasen pondría aquello de “abrimos a las 7 cerramos a las 19:30 dentro de esa franja cuando quieras” |
Salario
| Salario: | 15.000 € – 20.000 € Bruto/año (El salario debería ser estándar, pero ponerlo siempre, el no ponerlo no sirve para nada) |
Y si no hay AJAX?
Nov/096
Recientemente escribí un comentario en el blog de Alfredo Artiles1, Bitácora de Webmaster, en un artículo relacionado con la nueva propuesta de los señores de google para hacer indexable un site en Ajax. En su artículo Alfredo resumía que aunque vayan por el buen camino al intentarlo, el uso de las técnicas que proponía Google para conseguirlo no le parecía muy adecuado. Yo voy un paso más allá y diría que sería todo un error implementar las opciones que comenta Google, pero esto daría para otro artículo2.
La cuestión es que su post viene a cuento porque hace tiempo que os quería comentar como, creo, que debería hacerse una web con contenido en AJAX y creo que este sería el mejor momento para ello.
Lo primero, comentaros que el problema de AJAX no solo está con los buscadores, sino principalmente con la usabilidad y accesibilidad. Ese pequeño porcentaje de usuarios que llega al site desde navegadores especiales para discapacitados, o desde navegadores solo texto, o incluso en un porcentaje mayor, aquellos que acceden desde su móvil, ellos son el principal objetivo a solventar cuando se desarrolla en AJAX, no los buscadores que en este caso creo que son secundarios (aunque también salgan muy beneficiados).
Bueno, entonces la panacea al respecto, cual sería? Simple, no desarrollar en AJAX!
Esto que parece una perogrullada es realmente la mejor solución para corregir el problema, desarrollar sin AJAX y añadir la capa de AJAX a posteriori. Con esto conseguimos crear una navegación lo más sólida posible fuera de todo JavaScript, y una vez creada añadimos mediante JS la capa AJAX, a base de modificar los enlaces internos por llamadas asíncronas al servidor y un par más de detalles en el código. Así, si un navegador sin JS o un Bot llegan a tu site con ganas de recorrerlo entero no tendrán ningún problema y podrán navegar por todo el site de forma perfecta.
También están los beneficios añadidos, como poder abrir enlaces en pestañas/ventanas nuevas, crear otra capa de independencia entre la Vista y los Scripts (digamos MVSC), o uno más importante aun el de poder enlazar directamente una página interna desde cualquier lado sabiendo que va a llegar a dicho enlace.
Nota: A partir de aquí el asunto se pone muy denso, así que si lo tuyo no es la programación front o bakend o la maquetación o si no comprendes algo de AJAX, mejor quédate con la idea vista hasta ahora y mira ejemplos en, por ejemplo, la web de Coleccionismo Baral
Lo primero que haremos será dar por sentado unos conceptos de la programación del site:
- Se programa OOP (aunque en este caso no sea necesario, pero así vamos inculcando las nociones básicas mínimas)
- Usamos el patrón de diseño de software MVC, separando la Vista y el Control sobretodo.
- Usamos también el patrón Façade para tener así un único punto de entrada al código.
- Usamos URLs SEO friendly del tipo http://host/casa/coche que luego pasarán a ser http://host#casa/coche
Bueno, una vez está claro esto, empezamos con la programación del site, creamos la navegación básica, la lógica interna del site, los modelos,… En fin todo el desarrollo pero sin incluir nada de AJAX por ahora. Una vez realizada la navegación y teniendo en cuenta que usamos los patrónes Façade y MVC incluimos un pequeño script3 al código del site similar al siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | //Script File // variable general que nos servirá para chequear si hay que cambiar contenidos por AJAX var navAjaxCheck = false; // Función goto, encargada de hacer la llamada asíncrona // La variable jsonValue incorpora toda la información necesaria var goto = function (jsonValue) { // Posibles excepciones a la navegación por AJAX if (location.hash.test("signup")) return false; //waiter es para añadir el típico efecto de sombreado en el site mientras se cambia el contenido. jsonValue.waiter = jsonValue.waiter === false ? false : true; //update es el id del contenedor a remplazar // (false en caso de no quere actualizar nada y "contenedor general" en caso de "null") jsonValue.update = jsonValue.update ? jsonValue.update : (jsonValue.update === false ? false : 'contenedor_general'); // El nuevo valor del href jsonValue.href = jsonValue.href.test("#") ? " " : jsonValue.href; new Request.HTML({ // Aquí está el punto importante, mandamos toda la info a /ajax/ url: '/ajax/'+JSON.encode(jsonValue), /* Se desactiva por fallos con el IE. update: $(jsonValue.update), useWaiter: jsonValue.waiter, waiterOptions: { baseHref: '/', img: { src: 'img/loader.gif', styles: { width: '220', height: '20' } }, layer: { background: '#fff', opacity: 0.9 } }, waiterTarget: jsonValue.update, */ // Una vez completado guardamos el href y la información donde corresponde onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){ $(jsonValue.update).set('html',responseHTML); //reseteamos el init() ya que hay contenido nuevo en el site. init(); if (jsonValue.href && jsonValue.replace) location.hash = "#"+ jsonValue.href.replace(jsonValue.replace,""); //reseteamos la variable navAjaxCheck para contener la información del site actual navAjaxCheck = location.hash; } }).send(); }; //Función recursiva encargada de hacer de watchdog para la navegación asíncrona (dotando de la opción de retroceder/avanzar) var navAjax = function() { // Posibles excepciones a la navegación por AJAX if (location.href.test("signup")) return false; // Esto se da en el caso de que estemos en una URL normal tipo /casa/coche, que rápidamente la formateamos a // #casa/coche para que siga la lógica de navegación asíncrona. if (location.pathname != '/') { var href = location.href; var value = 'http://'+WEBHOST+'/'; // WEBHOST es una variable definida anteriormente location.href = href.replace(value,value+"#"); // por compatibilidad con IE // Comprobamos con el check generado si ha cambiado el hash de la URL, // en cuyo caso llamamos a goto con el nuevo hash }else if (location.hash != navAjaxCheck) { var href = location.hash; var value = '#'; goto({ href: href.replace(value,''), waiter:false, replace:"" }); } }; //Función principal encargada de cambiar todos los enlaces internos por llamadas asíncronas. var addAjax = function () { // Usamos una frase de testeo simple, el dominio del site (también podría ser algo más complicado mediante exp. regulares) var replace = 'http://'+WEBHOST+'/'; // Buscamos todos los enlaces del site $$('a').each(function(el) { var href = el.href; // Buscamos los que enlazan dentro del site y evitamos los marcados como "noAjax" // a los encontrados así les quitamos la opción por defecto y añadimos la opción de Ajax if (href.test(replace) && el.className != "noAjax") el.addEvent('click', function(event) { event.preventDefault(); goto({href: href, replace: replace}); }); }); // función con las llamadas necesarias al cargar el site (incluir el navAjax, chequear variables...) var init = function() { // Añadimos el ajax addAjax(); // .... } // Añadimos los eventos justo cuando el DOM ya se haya cargado. window.addEvent('domready', function() { // Lanzamos el control de AJAX con un periodical para que se ejecute continuamente // el tiempo aproximado depende de la carga de JS del site y al gusto de cada uno (entre 1 y 5 segundos) navAjax.periodical(1000); // Cargamos el init con la información necesaria. init(); // Cargamos el resto de funcionalidades que solo son necesarias una vez. } }; |
Como podréis ver, este JS está bastante mal codificado, lo suyo sería crear una clase completa que se encargue de toda la parte de navegación AJAX y hacerle mucho refactoring para conseguir algo decente, pero la idea es explicar los principios de acción, no daros un código 100% válido y correcto.
Ahora, solo tendremos que añadir al controller de la aplicación un método para cuando llegue por “/ajax/” que:
- Defina la constante
AJAX = TRUE4. - Coja la información pasada por la variable json del segundo parámetro y cambie la REQUEST_URI por la url del mismo.
1 2 3 4 5
//Algo similar a esto debería valer $json = /* variable con la información */ $ajax = json_decode(stripslashes($json), TRUE); $url = $ajax["href"] ? $ajax["href"] : $_SERVER["HTTP_REFERER"]; $_SERVER['REQUEST_URI'] = str_replace("http://".$_SERVER['SERVER_NAME'], '', $url);
- Continue de forma normal con el controller
Ahora la navegación para el resto del código es normal, hasta que llegamos a la parte de vista, donde utilizando la contante definida AJAX para saber si el usuario está utilizando AJAX o no y en caso afirmativo mostrar solo la información referente al AJAX que queremos, evitando mostrar por ejemplo la sección de “header” o las secciones fijas del template como el footer… Eso a gusto.
Como veis no es tan difícil añadir después la capa de AJAX y así se consigue una navegación con y sin JS casi-perfecta que facilitará y mucho la vida a navegadores y buscadores.
TODO: como observaréis el código JS está muy sucio y habría que hacer un refactoring completo de él. También habría que añadirle la posibilidad de controlar las anclas que ya existieran en el código (por ejemplo quitándolas y añadiendo un efecto de movimiento en la página al clicar sobre el enlace).
La parte del Controller y la de Vista las he dejado muy abiertas, esto es porque aquí cada maestrillo tiene su librillo, así que no he querido meterme mucho en como lo hago yo para no complicar más las cosas.
Y por último decir que en mi caso empecé usando una constante para definir el AJAX, pero rápidamente deseché esta opción ya que es posible que sobre una página se realicen llamadas sobre distintas secciones por ejemplo y al definir solo una constante esto no se cumple. Aquí lo que suelo hacer5 es pasar la información a través de la variable json(“update”) los campos a modificar, e incluir un código similar a este en el método que controla el AJAX para pasarlo a la parte de vista.
if ($ajax["update"]) { $zonas = explode ("::",$ajax["update"]); foreach ($zonas as $key => $value) $ajax[$value] = true; }
- aka @aartiles ↩
- Solo diré que con lo fácil de modificar que dicen que es, por qué los señores de Google no han realizado ya los cambios en su código? ↩
- Ojo, que estamos trabajando con Mootools y ClientCide y con un código bastante sucio y obsoleto, por cierto ↩
- Esto es ligeramente más complicado, pero para simplificar dejemoslo así por ahora ↩
- Aunque también habría que refactorizar ya que no me llega a convencer ↩
Lo que se pide, lo que se paga, lo que se obtiene
Nov/093
Quien más, quien menos, alguna vez ha tenido que pasarse algún tiempo buscando un nuevo puesto de trabajo. Y una de las formas más habituales de hacerlo es a través de empresas online de búsqueda de empleo. Lo bueno que tiene esto es que sin salir de casa tienes miles de ofertas, lo malo, que es un campo de cultivo para timadores, usureros y explotadores, por lo menos en el sector online.
El mayor problema de este sector es que lo mueven personas que en un 70% de los casos (quitemos startups y casos particulares) no tienen conocimientos técnicos o artísticos alguno, esto a priori no parece problema, y no debería serlo si siguiéramos los cauces normales en cuanto a niveles, grados y estructura dentro de una empresa. Yo no tengo porque saber programar, para eso me sobraría tener un CTO que se encargara de ese área y sobre el que poder delegar. Este a su vez tendría una plantilla compuesta por Project Manager, Senior Analyst, Senior Programmer, Junior Programmer. Lógicamente esta estructura en empresas pequeñas y medianas no se puede dar y hay que recurrir a recortar la estructura a uno o dos puestos nada más.
Y aquí es donde viene el problema, y es que buscamos remplazar puestos hacia arriba y no hacia abajo. Que significa esto, pues que si no podemos tener un Senior Analyst, no buscamos que el PM haga su trabajo, sino que el SP cubra las deficiencias. Esto en un puesto no es tan grave, el problema es cuando se quiere que un Junior cubra los puestos de Project Manager y Senior Analyst.
Hay que entender que todo trabajo requiere de un proceso de aprendizaje y que es necesario cubrir todos o casi todos los escalones hasta llegar arriba, ir saltándose escalones solo traerá problemas a la empresa. Y aquí es donde siempre nos equivocamos por creer que cualquier Junior puede llegar a hacer cosas de Project Manager, o que tiene la experiencia suficiente para hacerse cargo sin seguimiento de cualquier proyecto.
Luego está el aspecto monetario lógicamente, ya que un CTO puede cobrar 3 o 4 veces más que un Junior, lo cual visto al revés, implica que puedes tener a 4 Juniors por el precio de un CTO.
Y para completar este planteamiento erróneo, aparecen las empresas online de búsqueda de empleo1. Lugares donde cientos de personas buscan desesperadamente una oferta de trabajo donde dejar el CV, el campo perfecto para empresarios con ganas de ahorrarse un pastón que se creen que poniendo ofertas para Juniors2 con unos altos (y variopintos) requerimientos mínimos tienen todo solucionado.
Un ejemplo3 sería:
Analista Programador PHP:
Se busca una persona, joven, extrovertida y con 2-3 años de experiencia en desarrollo PHP, importaciones, pasarelas, web service, XML, etc.
Los entornos que tendrá que conocer serán los siguientes:
- PHP 4/5
- Conocimientos shell script y librerias linux auxiliares (imagemagik,gd…)
- Administracion básica de servidores linux.
- XHTML transitional o strict/ CSS 2.0
- Jquery , Jquery-ui , algun framework javascript
- MySQL 415.000 € – 24.000 € Bruto/año
Empresa que busca un Senior Analyst, con 3 años de experiencia y con los perfiles de programador backend, administrador de sistemas, maquetador, programador frontend y administrador de DB4 y que paga como se pagaría a un becario o a un Junior5.
Lógicamente, la persona que llegue a esta oferta de trabajo, si cumple los requerimientos mínimos con la experiencia indicada en empresa, será porque se encuentra en una situación desesperada a raíz de la crisis en la que nos encontramos, luego el empresario estaría siendo un usurero y estafador. Si la persona que llega miente en cuanto a la experiencia profesional o a los conocimientos, pero no en cuanto al rango salariar, nos encontramos con que el empresario está contratando a un Junior para realizar labores de Senior Analyst, luego entra en el rango de explotador.
Pero la cosa no acaba ahí, sino que luego, para rematar la faena, nos encontraremos a un Junior con muy poquita experiencia, pero con ganas de comerse el mundo y sin saber decir esto no se hacerlo realizando desarrollos avanzados a destajo, sin aprender lo más mínimo y chapuceando con lo poco que sabe. Conclusión fácil, el desarrollo que consigues es barato, pero si fuese una casa no me verías nunca acercarme ni al portal de la misma. Y vendrán los problemas después ya que el trabajo es nefasto, porque tiene mil bugs de seguridad, porque está hardcodeado, porque no es escalable, ni óptimo en cuanto a uso de los recursos… Y será cuando por desgracia, y esto pasa más de lo que nos creemos, tengamos que recodificar todo el proyecto y gastarnos un dineral innecesario en auditorías externas, programadores expertos y demandas por clientes cabreados.
Entonces, la pregunta sería, cual es la forma si no hay dinero?
Para empezar, lo fundamental, es siempre tener claro que hay rangos en la profesión, que los rangos no están por gusto y tampoco sus salarios y que cuanto más a rajatabla cumplas esta estructura mejor te irá. Tener también en cuenta que un Junior es una persona que necesita aprender y aprehender de un superior y no por arte divina6. Y que, por tanto, la formación es algo fundamental para crear un equipo.
Si no puedes tener un CTO, prueba con un PM o un Senior Analyst y si solo puedes optar a Juniors, preocupate muy mucho en formarlos, hay mil opciones en este aspecto, desde cursos profesionales que cuestan un dineral hasta gratuitos subvencionados por el estado. Pero intenta siempre formarles al máximo, además como buenos Juniors te lo agradecerán, reforzando así el lazo empresa-trabajador.
Y para terminar, pongámonos en una situación real, por ejemplo la mía, con un perfil netamente tecnológico. Una posible plantilla estaría compuesta por puestos de Senior Analyst y Juniors, siendo mi labor la de CTO y PM encargándome en todo momento de su seguimiento, análisis, ayuda y aprendizaje y buscando para el área de diseño, por ejemplo, un CDO al que delegar el seguimiento y formación del personal de dicha área.
- Ojo, que la culpa no es suya, ellas son solo el campo de cultivo de los empresarios-listillos ↩
- O para Senior Analyst con precios de Junior ↩
- Tampoco hay que buscar mucho, esta oferta está ahora mismo activa junto con otras más que había seleccionado en apenas 5 minutos de búsqueda ↩
- Cierto es que no dice nada de administrar, pero está claro que le tocará administrar la BD ↩
- Esto da un sueldo mensual neto entre 880 y 1330€ ↩
- Ten esto en cuenta también a la hora de contratar un CTO, ya que tener a un super experto que no pasa por las oficinas tampoco te servirá de mucho, y este es un caso real ↩