9 problemas que todo desarrollador debe afrontar

problemas desarrollo software

El camino que nos lleva desde el nacimiento hasta la muerte está lleno de elecciones sobre dónde trabajar y qué tipo de trabajo hacer. En ocasiones el mundo es bueno y nos da algo deinformación para poder decidir. Hoy en día los desarrolladores tienen más posibilidades de poder exigir cosas en su trabajo dado que hay más demanda de sus servicios.Ya seas un autónomo o un trabajador por cuenta ajena que merodea por las ofertas de trabajo, sabes que los anuncios pidiendo programadores abundan. Cada oferta de trabajo suscita innumerables dudas de cómo encaminarse profesionalmente en el mundo de la programación. Para muchas personas todo esto supone un territorio totalmente desconocido ya que han optado por emplearse a través del software y los ordenadores para satisfacer el deseo de trabajar, sin tener una clara vocación por ser desarrollador.Las siguientes nueve preocupaciones son claves a la hora de trazar el camino de tu carrera profesional. Algunas afectan al currículo. Otras ofrecen oportunidades para el desarrollo profesional en sí mismas. Y luego hay una serie de cuestiones que versan sobre cómo capear los problemas laborales específicamente relacionados con las TIC. El hecho de dedicarle tiempo a pensar en estas cosas es algo más que simplemente estar preparado para responder sobre ellas con alguien te las pregunte. Es el primer paso para sacarle el máximo provecho a tus intereses y habilidades.¿Te dará una certificación ventaja en el mercado laboral?Un dilema muy común al que se enfrentan los desarrolladores preocupados por su carrera profesional es cuánta atención deben prestarle a las certificaciones. Después de todo, los empleadores quieren averiguar si realmente sabes lo que dice saber, y las empresas tecnológicas siempre están ofreciéndose voluntarias para ayudarles a determinarlo con programas de certificación.Los programas de certificación van dirigidos a enseñar una tecnología determinada, y luego evaluar el grado de competencia sobre lo que han enseñado. Ponen el foco en soluciones prácticas, no en enigmas teóricos como en la mayoría de las universidades. De esta forma, resultan atractivas para empresas en busca de candidatos veteranos para determinar cual es su capacidad de dar soluciones reales a problemas reales.Sin embargo, la pregunta clave para un desarrollador es saber si existe o no una demanda real por una certificación en concreto. La mayoría de las tecnologías de vanguardia son demasiado nuevas para poder evaluar a alguien sobre ellas, así que los empleadores lo que hacen es buscar otras pruebas que demuestren su dominio. El verdadero mercado de las certificaciones siempre estará en herramientas de base como la ejecución de una base de datos Oracle o el mantenimiento de una flota de formularios en Microsoft. Las empresas que dependen de Oracle o Microsoft pagarán más a personas que ya han demostrado tener la destreza. Cuando tu certificación y las necesidades del empleador están alineadas, todo el mundo está contento.Pero lo cierto es que los desarrolladores necesitan elegir bien. Preparar exámenes de certificación toma mucho tiempo, y muchas de las preguntas versan sobre conocimientos triviales. Yo he hecho varios exámenes sobre Java stack y me he dicho a mi mismo: saber esta respuesta es responsabilidad de Eclipse, no mía. Windows XP era genial hace 10 años, pero hoy no sirve de nada a no ser que la empresa para la que trabajes se quede con XP hasta el día del juicio final. Muchas veces existen certificaciones distintas en función de las versiones del software...¿Cuál es el valor verdadero de una licenciatura en Informática?Si ya es difícil discernir si merece la pena obtener una certificación profesional para una tecnología en particular, resulta casi imposible decidir si merece la pena invertir en una licenciatura universitaria tradicional. Todo lo que hay que hacer es echar un ojo a líderes como Steve Jobs, Michael Dell, Bill Gates, o Mark Zuckerberg para darse cuenta de que una licenciatura universitaria no es un requisito imprescindible para cambiar el mundo.Sin embargo es difícil acabar con las viejas tradiciones. Algunas empresas insisten en tener una licenciatura o incluso un máster porque es una forma fácil de filtrar y hacer criba de Currículos, o también porque dan una idea sobre cualidades intangibles de los candidatos como un profundo interés y versatilidad a la hora trabajar con ordenadores. Cualquiera que sea la razón, un gran número de personas siguen pensando que es fundamental tener un título, así que los desarrolladores con el ojo puesto en las ofertas de empleo se encuentran con la disyuntiva de acumular títulos y diplomas una y otra vez.El valor práctico de una licenciatura universitaria es controvertido. Algunos encuentran que los temarios universitarios versan sobre cuestiones demasiado teóricas sobre algoritmos que no son significativos en el entorno laboral. Los profesores están más interesados en pensar si el tiempo de ejecución puede predecirse con un polinomio o con una función exponencial.Otros creen que este entendimiento abstracto de algoritmos y estructuras de datos es esencial para hacer un buen trabajo ante nuevos retos y desafíos. Los lenguajes de programación vienen y van, pero un profundo entendimiento permanece hasta la jubilación.¿Deberías especializarte o abarcar muchos lenguajes de programación?Un buen desarrollador puede programar en cualquier lenguaje porque los lenguajes al final son declaraciones if-then-else envueltos en funcionalidades ingeniosas para ser re-utilizables. Todos los desarrolladores al final terminan teniendo un lenguaje preferido con un conjunto de fórmulas y construcciones que se les quedan grabadas a fuego.El verdadero reto está en elegir el mejor lenguaje para el mercado. La mayor demanda será en aquellos lenguajes que forman los cimientos de las grandes pilas. Java, C++, PHP, y JavaScript siempre son buenas alternativas.Pero los nuevos lenguajes como también seducen. No solo resuelven los problemas que nos volvían locos de los viejos lenguajes, sino que tampoco nadie ha sido capaz de expresar con palabras las nuevas irritaciones que causan.Los empleadores a menudo están igual de titubeantes a la hora de comprometerse con un nuevo lenguaje de programación. Por un lado, les seducen las promesas de que un nuevo lenguaje acabará con los viejos problemas, pero también se muestran escépticos y prudentes ante posibles modas pasajeras. A la hora de comprometerse tecnológicamente lo hacen por un tiempo indeterminado, incluso varias décadas, y deben elegir sabiamente para evitar encadenarse a un lenguaje que en su día estuvo de moda y que ya nadie usa ni conoce.Para los desarrolladores la mejor opción es obtener pericia en un lenguaje con una demanda creciente. Antes de que saliera el iPhone, Objective-C era un lenguaje que se usaba para escribir aplicaciones nativas para el Mac que se estaba desvaneciendo. Luego cambiaron las cosas y la demanda de Objective-C explotó. La apuesta que cada desarrollador debe hacer es jugársela por un lenguaje que con el tiempo quizás se muera o crezca.¿Deberías contribuir a proyectos de código abierto?El clásico estereotipo de los proyectos de código abierto es que los organizan puristas descuidados que le dan la espalda a cualquier cosa que tenga que ver con dinero. Este estereotipo se va desmontando a medida que los programadores se están dando cuenta que tener experiencia en los principales proyectos de código abierto al final se convierte en un gran activo para muchos empleadores e incluso una profesión en si mismo.La ventaja más obvia de trabajar en un proyecto de código abierto es que puedes compartir tu código con un empleador o demandante de empleo potencial. No hay cláusulas de confidencialidad ni restricciones propietarias que no te permitan compartir tu código con empleadores potenciales. Cualquiera puede verlo y si has alcanzado cierto estatus en la comunidad demuestra además que sabes trabajar en equipo y tienes conocimientos y capacidad para contribuir a un proyecto en marcha. Son destrezas muy valoradas que muchos programadores nunca llegan a desarrollar.Algunos de los proyectos de código abierto más famosos forman parte ahora del código de aplicaciones empresariales, así que hay empresas buscando desarrolladores que forman parte de la comunidad alrededor de la cual depende su aplicación. Un gerente en una gran empresa de servidores me dijo una vez que no podía permitirse contratar Linus Torvalds, pero que necesitaba alguien con conocimiento profundo de Linux. Se fue a echar un vistazo al proyecto Linux y contrató a gente que conocía a Linus Torvalds. Si en el proyecto se encontraba intercambios de correos entre Torvalds y un programador X, el gerente le llamaba.Muchos proyectos de código abierto necesitan de soporte, y esto también puede ser una especie de segundo trabajo que para muchos termina siendo su profesión a tiempo completo. A las empresas les resulta más barato adoptar una tecnología de código abierto y contratar a unos cuantos consultores técnicos para hacer que funcione en vez de adquirir software propietario.Los programadores más hábiles tambien le dedican tiempo a proyectos de código abierto desde una edad muy joven aportando código. Pueden así trabajar en proyectos de vanguardia porque son molones. Si el proyecto va y se convierte en el próximo Hadoop, Lucene, o Linux, serán capaces de convertir ese experimento en un trabajo y, muy probablemente, en una profesión duradera.¿Cómo gestiono el hacerme mayor?¿Qué es lo que quiere cualquier empleador? Un programador soltero de 21 años licenciado para tarbajar mil horas y crear grandes cosas. ¿Y qué tal un de 22 años con un año de experiencia? Bueno, quizás. ¿Hay muchos jóvenes veinteañeros disponibles?Una de las grandes, y muchas veces innombrables, reglas de la programación es que los gestores tienen ideas muy cerradas sobre la edad apropiada para el trabajo. No es que los gerentes quieran discriminar,-y no es que los humanos quieran cambiar al volverse mayores-, pero es que lo hacen. Así que todo el mundo se aferra a los estereotipos aunque sean contrarios a la ley.Este es el más obvio en el mundo hiper-competitivo de las startups tecnológicas, donde la actitud de trabajo es como en la NBA. Si te atascas al final de la licenciatura, no eres lo suficientemente especial. Este mundo premia a las personas que se tiran muchas horas haciendo cosas de manera obsesiva. Les gusta la juventud, y no resulta extraño escuchar historias de como las empresas de capital-riesgo dejan de lado a todos los que no tienen veinti-tantos.La buena noticia para los programadores es que otros empleadores prefieren personas con más edad, más curtidos que ya saben tarbajar en equipo. No son los trabajos guay y molones que salen en la prensa, pero sí están bien-remunerados y resultan satisfactorios.Los programadores más habilidosos se miden compitiendo contra la competencia. Algunos puestos son para esas personas que se quedan programando toda la noche como posesos, y los programadores con más edad con familias ya ni se deben molestar en competir por los mismos. Otros requieren experiencia, y los jóvenes desarrolladores estrellas del rock se deben mantener al margen de jefes que buscan estabilidad, no brillo ni desparpajo.¿Cuánto importa el lugar donde trabajas?Si estás dispuesto a montar todas tus posesiones en la parte trasera del coche y moverte, lo único que importa del sitio donde trabajas es si te gusta el menú del día del sitio más cercano. Buena comida y un buen entorno es lo único que importa.Pero dónde buscar tu próximo trabajo es una pregunta difícil cuando no puedes coger y marchar a cualquier parte. Si tienes una familia o cualquier otra razón que te impidan ser un nómada de la programación, tienes que pensar en un lugar de mucha estabilidad antes de comprometerte con cualquier empresa.Muchos programadores en Silicon Valley van moviéndose de startup a startup. Si una no funciona, hay otra montándose en este mismo minuto. Hay bastantes ofertas en otras empresas, y eso hace que encontrar nuevos desafíos sea más fácil.Por esta razón a algunas empresas les resulta difícil atraer talento a regiones donde solo hay una empresa dominante. Si te mudas a Oregón o Washington y el trabajo no sale bien, te tienes que volver a mudar.¿Puedes elegir un nicho para evitar el achazo de la deslocalización?Últimamente los programadores han empezado a especializarse en capas específicas. Algunos son genios de los interfaces de usuario. Otros entienden de particiones y arquitectura de datos.El creciemiento potencial de una profesión en una capa específica de la programación debe siempre valorarse, en particular en relación con su vulnerabilidad frente a la deslocalización. Algunos sugieren que los GUI dependen de la cultura, así que el riesgo de sufrir deslocalización en este ámbito es menor. Otros piensan que la mejor opción es pillar la gran ola de los repositorios de big data porque cuando sube la marea todos los barcos flotan.Aunque el cambio es una constante en las TIC, no es una buena idea coger todas las olas. Si tienes un sentido de la estética lamentable, no intentes convertirte en una estrella del rock de las GUI. Tampoco tendría mucho sentido venderte como un genio de la big data si te resulta confuso un libro de texto sobre estadística. Hay ciertos límites de hacia donde puedes maniobrar en tu vida profesional, pero si hay formas para de adaptarse al cambio y ser inmune al fenómeno de la deslocalización.¿Debería convertirme en autónomo y ser programador freelance?Un dilema profesional cada vez más común para los programadores es si quedarme en mi puesto a tiempo completo trabajando como empleado por cuenta ajena o dar el salto y trabajar por cuenta propia como autónomo. Muchas empresas, especialmente las más grandes, están encantadas de trabajar con autónomos porque les facilita mucho la vida en términos de planificación a largo plazo, ya que les permite coger nuevos proyectos sin levantar la ira de los administradores que están todo el día contando cabezas y viendo gastos de personal.A nivel práctico lo más importante es hacer que te cuadre tus gastos de seguridad social y tu prestación cuando te jubiles. Muchos autónomos recurren a planes privados una vez que el les va bien aunque muchos otros encuentran todo esto muy engorroso y les da dolor de cabeza el simple hecho de pensar en ello. En verdad es engorroso al principio pero una vez que ya tienes un plan claro, es bueno saber que tienes eso cubierto y que solo tienes que buscar clientes para poder ceñirte a los pagos.Otro aspecto más importante es saber en verdad que es lo que te gusta hacer. Los trabajadores por cuenta ajena son perfiles más conservadores y les gusta la responsabilidad de que las cosas funcionen y sigan su curso. Los programadores freelance se caracterizan por hacer cosas nuevas y resolver problemas y se les contrata solo cuando se les necesita. Es difícil generalizar, pero mayormente cuando ya llevas años en una empresa de desarrollo acabas siendo encargado de mantenimiento de software más que otra cosa.Por esta razón, los programadores freelance tienen la libertad profesional de poder especializarse en tecnologías concretas mientras que los trabajadores por cuenta ajena se especializan en hacer que los desarrollos sigan funcionando. Ambos perfiles se pueden vender a sí mismos como expertos en Oracle o Microsoft o Lucene, pero los empleados son los encargados de hacer que los proyectos estén listos para funcionar porque el jefe lo necesita para el viernes que viene.Dependiendo de la cultura del empleador, esta forma de trabajar puede suponer dos cosas: coger mucha experiencia como trabajador o una alta probabilidad de prestar mantenimiento a software de empresas desfasado durante demasiado tiempo para un desarrollador con otras inquietudes.Hay trabajo mas allá de la tecnología...A muchos programadores se les olvida que hay muchos puestos de trabajo en empresas que poco tienen que ver con la tecnología. Lo facil es dar por hecho que todos los desarrolladores trabajan para empresas tecnológicas.Un desarrollador inteligente debe darse cuenta que elegir un empleador que no es tecnológico puede brindar unas posibilidades profesionales únicas. Hoy en día casi cualquier empresa necesita trabajadores con buen dominio informático y un plan para sacarle el máximo partido a los sistemas informáticos que tienen implementados. La fuerza de venta necesita software para seguir la pista de clientes potenciales, los almacenes necesitan software para controlar la mercancía. En la mayoría de los casos tiene que haber alguien que personalice estas aplicaciones para que se adapten a las necesidades de estas empresas.Entender plenamente la tecnología y el negocio de una empresa es uno de los principales argumentos en contra del outsourcing. El conocimiento de muchas herramientas famosas se vuelve algo fácilmente vendible, y ello hace que crezca la deslocalización de ese tipo de mercados lo que obliga a competir contra precios mucho mas bajos. Pero si conoces bien dos o mas aspectos de un negocio como programador eres difícil de reemplazar.La clave de esta cuestión es saber cuanto estas dispuesto a aprender sobre el negocio, sea cual fuere. Si solo quieres hablar de punteros y estructura de datos, quedare en la empresa TIC. Pero si eres curioso por naturaleza sobre como funcionan los negocios mas allá del software, ten en cuenta que hay demanda de trabajadores como tu en otros sectores cambien.

Nota: este post es una traducción de este artículo.Articulo relacionado: 16 años creando software, Quieres ofrecer tu propio ERP, Estrategias para crear software, Como mejorar en mi oficio de desarrollador de software
Déjanos tus datos para probar la plataforma