You are currently browsing the category archive for the ‘Software’ category.

Crecer profesionalmente en del desarrollo de software es un trabajo retador.  Como dicen los superheroes: un gran poder trae consigo una gran responsabilidad. Y esta responsabilidad trae consigo cosas buenas y también cosas malas.

Pues bien, esta semana tuve una de las experiencias más difíciles en mi vida laboral. Por primera vez tuve que despedir a una persona.

Los grupos de desarrollo de software generalmente son unidos. Tenemos que trabajar hombro a hombro; muchas veces trasnochando para sacar adelante un proyecto. Si uno falla, todos fallamos. En el día a día nos contamos las cosas, los problemas, y si lo piensan un poco, quizás compartan mas tiempo con los compañeros de oficina que con sus parejas!

Pues bien, después de varias fallas en uno de mis queridos amigos, y por supuesto de haberle pedido  varias veces que mejorara su rendimiento, tome la decisión de terminar su contrato.

Imagen

Aquí algunos consejos si lo tiene que hacer usted:

  1. La decisión ya esta tomada. No piense en nuevas oportunidades.
  2. Haga una lista de las cosas, las buenas y malas. Lea esta lista justo antes de citarlo a la reunión para tenerlas en la cabeza.
  3. Prepare la carta de despido.
  4. Cite a la persona, sea directo y conciso: Comience con la dura frase: Estas despedido. Luego de unos segundos explique claramente las razones.
  5. Déjelo expresarse, pero tenga en cuenta que no es una conversación. Ante cualquier duda recuérdele: La decisión ya está tomada.
  6. Después de entregarle la carta dele instrucciones precisas de los siguientes pasos :liquidación, entrega de inventario, etc.
  7. Termine con la frase: «Te dejo unos minutos a solas».

No hay un momento ni un lugar adecuado. En la experiencia que les estoy relatando esta persona lloró, me recordó que tenia familia, me recordó que eramos amigos.

El corazón se me hizo pedazos. Mis manos y mi voz temblaba, en ese momento solo le pude decir

Amigo: Te quiero, pero estas despedido.

Después de algunas semanas: aun me siento como un hijo de puta.

Yo soy de la generación que pensaba que el futuro estaba en estudiar ingeniería informática. Soy de la generación que vio nacer los ordenadores, que los vio crecer hasta convertirse en las máquinas que son hoy en día.

Soy de la vieja guardia, que estudiaba en computadoras sin disco duro y sin ratón. Que pensaba en ser ingeniero de la NASA y que sabia ortografía porque no existía el corrector . Soy de la generación que pasó de una maquina de escribir a las primeras versiones de computadores y pensaba que el futuro estaba en mis manos.

Imagen

El problema es que eramos miles los que pensábamos de esa manera, y una vez terminamos de estudiar, trabajar de ingeniero de sistemas era sinónimo de arreglar impresoras, armar computadores clones o dictar cursos de Excel.

Pero a veces las cosas cambian para bien y hoy que abro los ojos me doy cuenta como ha cambiado el mundo. Roles especializados y múltiples oportunidades. El abanico de posibilidades es extremadamente grande y  crece cada día más.

«La especialización es el consejo».

Arquitectos empresariales que ganan millones necesitan contratar Arquitectos empresariales de datos, de infraestructura, de software y de negocio. Estos a su vez necesitan DBAs, back-ends, front-ends, diseñadores de software. Cada uno hace lo suyo.

La buena noticia: cada vez se necesitan más personas especializadas, y cada vez somos menos los que estudiamos esto.

Algo bueno tenia que salir de «comer» tanto libro y vivir de tantos sueños.

@DeveloperEnComa

The Software size and complexity have increased over the last several years. All kind of specialized developers have been included in the teams: back-ends, front-ends, database experts, even graphic designers. Nowdays, functional requirements are only a part of the equation and not the whole concern.

A new almighty role was required in order to rule them all. The need was born, the degree has been chosen: «Software architect». However the rights and obligations are not still clear enough. At the end of the day, anyone could be a software architect, because no one knows exactly what is it all about.

 

Software is different from other engineerings, it is immature, new , and even naïve.

HowProjectsFunctionTrim

Millions of dollars has been spent in software projects with not precisely happy ending. Companies all over the world know the importance of high level design before start coding. However not many of them are willing to take the step forward. If they were able to finish a project without an architect, why to start now? Evidence is not enough.

The software architecture is a new term and has evolved in the past few years. The Software architecture is not a fad, it is here to stay, it is here to help companies all over the world to create complex software with huge requirements.

 

Ya despotrique de los arquitectos, por favor, despotriquen de mi ingles.

N.T Despotricar = «hablar mal»

 

Hace poco tiempo, @KazeEDP  estaba haciendo una pregunta que todos los desarrolladores alguna vez nos hemos hecho: ¿Cual lenguaje de programación debería aprender?. Después de una infructuosa encuesta en mi cuenta de twitter decidí hacer una pequeña investigación.

Existen organizaciones como TIOBE dedicadas a hacer estudios de aceptación y popularidad de lenguajes. De este estudio se puede sacar las siguientes conclusiones:

  • En lo que se refiere a popularidad los puestos están asi: C(1), Java (2), Objective-C (3), C++ (4), C# (5) 
  • Java baja un  puesto respecto al año pasado y Objective-C pasa del puesto 5 al 3.
  • Visual Basic gana mucho terreno pasando del puesto 35 al 15.

Respecto a cantidad de trabajos encontré la página Jobstractor. De acuerdo a esta información, para Diciembre de 2012, se necesita más programadores para los siguientes lenguajes: PHP(883), JAVA(854), OBJECTIVE-C(678), Ruby(283) y C#(241).

La página de PyDatalog, hace comparaciones teniendo en cuenta únicamente la búsqueda de tutoriales, lo que da una idea de la cantidad de personas que están aprendiendo. El resultado en orden es: JAVA (30.5%), PHP (15.4%), C++(10.4%), C#(10.1%) Y C(9.2%).

Otro indicador interesante podría ser la cantidad de proyectos en GitHub y la cantidad de preguntas en StackOverflow. Esto se puede observar en la siguiente gráfica.

Imagen

Conclusión

  • Existen lenguajes que tienen gran aceptación debido a que llevan mucho tiempo en el mercado, como Java, C,  C++ y C#
  • Existen lenguajes que estan subiendo puestos como Objective C, Ruby y Visual Basic.
  • Si no tienes ni idea de programar, yo recomendaría Ruby, que tiene gran mercado y gran popularidad dentro de aplicaciones en la Nube.
  • Si ya sabes programar y quieres aprender algo nuevo, yo recomendaría Objective-C, ya que actualmente se requieren muchos desarrolladores para móviles  Ademas son los mejores pagos.
  • Otra opción es dedicarte a aprender cosas de Front-End, que también  tiene buenos ingresos; ya sabes: javascript, jquery y todos sus juguetes.

Pero la conclusión mas grande es: El lenguaje no hace al programador. Todos los lenguajes tienen ventajas y desventajas, y los que hemos programado por mucho tiempo sabemos que esto es verdad.

C# o Java? Que mas da, mientras uno entregue un proyecto bien hecho y en el tiempo acordado. 

Atentamente: @DeveloperEnComa

 

Al parecer, mi experiencia imaginaria en SCRUM no fue suficiente para conseguir un trabajo que me interesaba. Me pedían una certificación y aunque no son de mi agrado, me tome el trabajo de investigar sobre el tema. El resultado: Existen certificaciones en Scrum para gente pobre y certificaciones para gente rica. Así como lo leen. Imagen

Existen dos opciones para adquirir la certificación:

ScrumAlliance – Certified Scrum Master (SCRUM para ricos)

  • Para certificarse en CSM es obligatorio asistir a un cursó, que en mi país tiene el valor de 1250 dolares. Casi 4 salarios mínimos.
  • Ademas de asistir al curso, se debe presentar un examen de 35 preguntas. Solo se debe contestar correctamente el 68% de las preguntas para pasarlo.
  • Si no aprueba el examen, puede pagar 25 dolares adicionarles y volverlo a presentar

Scrum.org-  Professional Scrum Master (SCRUM para pobres)

  • Tomar el curso para scrum master en Scrum.org tiene un costo similar $1295, sin embargo no es obligatorio tomar el curso para hacer la certificación.
  • La certificación (examen) tiene un costo de 100 dolares.
  • Para pasar la certificación de Scrum.org, Professional Scrum Master (PSM) se deben contestar bien el 85% de 80 preguntas.

Resumen

Para obtener una certificación como ScrumMaster se tienen dos opciones, estudiar por cuenta propia o tomar un curso. Aunque he escuchado que los curso son buenos, siempre recomiendo ser autodidacta.

Yo, @DeveloperEnComa, tomaré la certificación con Scrum.org, estudiaré del libro gratuito durante 1 semana y me gastaré 100 dolares. Los restantes 1100 dolares me los gastaré en cerveza, a la salud de todos ustedes.

Salud!!

Ahora que estoy buscando gente para este nuevo proyecto me toca contestar a la complicada pregunta: «y cuanto pagan?».

Hace rato aprendí a no hacerle esta pregunta a mis compañeros de trabajo, ya que uno termina sintiendo envidia o amargándole el rato a alguien. Pues bien, aquí hay algunos datos que si bien son pocos pueden servir como base para hacer una comparación.

Como espero que este Blog lo lean de varias partes de latinoamerica, voy a colocar los valores en pesos colombianos y en dolares. Pero como el nivel de vida también es un factor a tener en cuenta, propongo una medida universal: valores de pasajes de transporte publico. Es decir, con un sueldo mensual, cuantos pasajes de bus puedo pagar.

Los siguientes valores corresponden a pagos mensuales de los cuales tengo conocimiento. Estos salarios son reales de la empresa en la que trabajo actualmente y de mi empleo anterior.

Arquitecto de software (reputas): 10’000.000(Pesos) = 5558 (US$) = 6986 (Pasajes de bus)

Arquitecto de software (experimentado): 7’500.000 (Pesos) =  4168 (US$) = 5172 (pasajes de bus).

Arquitecto de software (estándar): 5’000.000 (Pesos) =  2799 (US$) = 3488 (pasajes de bus)

Líder Técnico: 4’500.000(Pesos) = 2501(US$) = 3103 (pasajes de bus)

Desarrollador senior: 4’000.000 = 2502 (US$) = 3103 (pasajes de bus)

Desarrollador Junior: 2’500.000(Pesos) = 1389 (US$) = 1724 (Pasajes de bus)

Tester: 2’500.000(Pesos) = 1389 (US$) = 1724 (Pasajes de bus)

 

Hay que tener en cuenta algunas variables a la hora de hacer el calculo:

  • El tiempo que lleva en la empresa. A mayor tiempo la remuneración debe ser mejor.
  • El área en la que tiene experiencia. En este momento los desarrolladores de dispositivos moviles y los desarrolladores de front-end, pueden darse el lujo de pedir un par de millones por encima de los salarios que relacioné.
  • Experiencia. Una variable importante para calcular el sueldo. En cuantos proyectos ha trabajado? Con cuantas empresas? Cuantos años?
  • Capacidad de negociación. Como todo en la vida, el salario depende de lo bueno que sea uno para convencer al jefe de cuanto le debe ganar.

Por ultimo, tenga en cuenta que en Colombia hay millones de personas que sobreviven con el salario mínimo legal vigente.

Salario mínimo: 566.700(Pesos) = 315 (US$) = 390 (Pasajes de bus).

Y usted, cuantos pasajes de bus puede pagar con su sueldo?

 

 

 

 

Hoy presenté un examen de conocimientos en análisis y diseño de software. Eran muchas preguntas que me hicieron recordar toda mi vida de desarrollador.

Al igual que en la película, las cosas que he vivido a través de los años me ayudaron a solucionar los puntos del examen. Cada pregunta me recordó un trabajo distinto; un momento distinto en el que estaba tratando de solucionar un problema en particular. De la etapa de desarrollador junior pasando por senior hasta llegar a «arquitecto».

Somos la suma de todo lo que hemos vivido.

Cada experiencia enriquece el conocimiento. Es importante vivir cada etapa del desarrollo personal, evolucionar y aprender de los errores. La experiencia es tan importante como la formación.

La clave para hacer un buen software es entenderlo a profundidad. En la etapa de análisis nos vemos enfrentados a cientos de requerimientos y casos de uso. Requisitos y deseos de los usuarios.

Existen muchas alternativas para plasmar estas ideas y relacionarlas una vez se tienen claras. Sin embargo, mientas se está trabajando en la concepción del problema los recursos son más escasos.

Ahí es donde entran los mapas mentales. Un mapa mental es un diagrama donde se pueden expresar ideas, objetos, tareas, conceptos y relacionarlos alrededor de una palabra clave.

Se debe recordar que estos tipos de diagramas no se deben catalogar como correctos o incorrectos. Simplemente sirven en mayor o menor medida. Con la experiencia van mejorando y aportan mas información valiosa.

La idea es muy sencilla: Coloque la palabra clave, la mas importante en el centro. Y a partir de ella comience a ligar los conceptos atados a ella. Esta es una tarea recursiva en donde puede llegar al nivel de detalle que se acomode al propósito del análisis.

 

Ejemplo de mapa mental

Ejemplo de mapa mental

Tenga en cuenta los siguientes consejos:

  • Coloque la información relevante. Con el tiempo se dará cuenta que tener mucha información al igual que tener poca es un obstáculo.
  • Use su imaginación. No tiene que seguir un patrón «correcto» siempre y cuando el diagrama capture la idea.
  • Utilice gráficas y palabras cortas. El cerebro responde mejor a estas ideas.
  • Estos mapas aplican para cualquier etapa, cualquier idea. No necesariamente ligada con el software.
  • Solo basta un papel y un lápiz  Si se acaba el papel puede ir agregando hojas para seguir detallando el gráfico.

Una buena herramienta gratuita en la nube, para hacer estos mapas es:

http://mind42.com/

 

Por ultimo, recuerde que la importancia del gráfico es que la próxima vez que lo vea usted entenderá por completo el concepto sin necesidad de leer un texto complicado y sin necesidad de entrar al detalle.

 

 

Esta historia podría comenzar de diferentes maneras.

Podría ir directo al final y contarles como quede en coma; o podría iniciar con los consejos de mi madre relacionados a no comprar una moto. No se por donde comenzar, porque aun hay cosas que no tengo claras, así que quizás lo mejor sea iniciar por los hechos que tengo claros y que sucedieron antes del accidente.

Pero antes de dar inicio quiero hacer una aclaración. Este no es un blog relacionado con medicina o con experiencias de la vida, es un blog que quiero orientar a la tecnología y a como ha avanzado en estos años en los que estuve completamente aislado del mundo.

Después de 4 años en coma, despierto y me doy cuenta de que el mundo ha cambiado. Nuevas tecnologías, nuevos frameworks. Mucho que aprender y compartir.

Siempre me gusto el desarrollo. Mi primer programa lo hice tal vez cuando estaba en tercero de primaria, en una  calculadora Casio que solo desplegaba 4 lineas de código a la vez.

En el bachillerato no fue diferente, computadores comodoro, trabajando en Cobol, Pascal, C, C++ y viendo como nacía una nueva era con ventanas, que en ese entonces solo ayudaban a realizar tareas administrativas.

En mis últimos años del bachillerato me ganaba la vida haciendo las Tesis de los ingenieros de sistemas que estaban por graduarse y que como mucha gente en ese entonces no les apasionaba el desarrollo.

Y llego el momento de la Universidad  Presenté el examen en la Universidad Nacional de Colombia y como era de esperarse…..  no pase. Después de vivir mucho tiempo, haber trabajado con muchas personas y haber tenido muchas experiencias, puedo decir que a un profesional no lo hace la universidad, así como a un buen desarrollador no lo define el lenguaje.

Con la universidad llego el builder, las bases de datos, el delphi y  algo de java. Estos conocimientos los utilice en mis primeros trabajos, siempre sediento de aprender nuevas cosas y de aprovechar al máximo estas herramientas.

Finalmente, en el 2003 entre a trabajar en la compañía de mis sueños. Una empresa pequeña pero que tenia un futuro gigante. Una empresa en la que los desarrolladores, todos, sin excepción eran unos genios, que sabían de todo, hablaban, compartían y enseñaban. Reían y estaban dispuestos a aprender. Allí trabajábamos con .Net Framework 1.0 (C#) y en aplicaciones windows y web.

El reto era claro: Abrirnos las puertas en el mercado internacional. Crear un software de calidad y exportarlo a todas las naciones del mundo (Pinky y Cerebro).

Trabajando algunos años las decisiones nos llevaron a cambiarnos a JEE. Se abría una nueva era, una nueva oportunidad de aprender. Una herramienta empresarial robusta para dar soporte a los millones de usuarios que queríamos tener.

Después de certificarme en Java , en aplicaciones web y en componentes; y después de trabajar varios años mas en esta aplicación… allí, justo allí cambio mi vida para siempre.