Es común tener la imagen típica del desarrollador de software introvertido, con
problemas para comunicarse apropiadamente, también es común el programador, que
sin ser tímido, decide aislarse del resto del equipo para centrase únicamente en
su trabajo. En ambos casos esa percepción y comportamiento es completamente erróneo,
además de inservible tanto para las necesidades de la empresa, como para las necesidades
mismas del desarrollador.
Los motivos para que se de esta imagen, y este comportamiento son diversos, en parte
es porque clásicamente esta profesión es difícil de comprender para no los
no introducidos en ella. si bien uno puede generar empatía, por ejemplo, con el
trabajo un medico aunque no se fuera ducho en su profesión, no pasa pasaba lo mismo
con el desarrollo de software. No se alcanzaba a comprender que era exactamente
la construcción de sistemas, lo cual creaba una brecha entre el desarrollador del
software y los consumidores de dicho software, esto es incluso a nivel empresarial
y social. Mientras que es fácil establecer un entendimiento claro sobre las necesidades
de un puesto de trabajo cualquiera entre empleado y empleador, no ocurría los mismo
cuando el empleado es desarrollador y el empleador no (y esto era así en ambas direcciones).
El acercamiento general de la tecnología a la sociedad dado en los últimos años,
y representado sobre todo por el uso de los teléfonos inteligentes (sorprendentemente
por encima incluso de las necesidades de la informática en forma laboral), ha contribuido
a que la brecha se disminuya en cierta forma, si bien no hay un entendimiento completo,
si queda claro que se necesita de la capacidades de un desarrollador de software,
o por lo menos del desarrollo de software en sí.
Desde el punto de vista de la misma profesión, creo que académicamente se fomenta
la parte poco social e introvertida del desarrollo de software. Esta carrera requiere
grandes dosis de introspección, es necesario dedicarle horas, trabajo y esfuerzo
de forma individual, pero también es cierto que a nivel universitario, se enseñan
a comprender las soluciones, antes de plantear los problemas, se enseña antes a
programar, que a saber por qué se programa. En la carrera se instituye el uso de
las matemáticas y de la lógica, como un eje central en el desarrollo de software,
y esto se mantiene como un mantra posteriormente. Si bien las matemáticas y la lógica
son importantes, no dejan de ser herramientas a usar, sin embargo el saber reconocer
necesidades, a trabajar e interactuar correctamente en un equipo de trabajo, son
habilidades que no se establecen apropiadamente en ámbito universitario.
Un ejemplo de lo anterior son la enseñanza de las base de datos. Las base de datos
tiene una importancia empresarial enorme y digamos que son un solución directa para
un problema en especifico, sin embargo quedan pobremente explicadas en la mayoría
de las carreras universitarias. Cada vez que entrevisto a un candidato para un puesto
de trabajo, el punto débil son las base de datos. Los nuevos programadores no comprende
el alcance y la necesidades del uso de las base de datos, e incluso programadores
veteranos, tratan a la base de datos como si fuera programación imperativa y estructura,
en lugar de ser declarativa y lógica, llenando un sinfín de procedimientos almacenados
con lógica de negocio, y teniendo graves temas de ineficiencia al acceder a los
datos. En estos casos tanto la parte matemática/lógica como la parte de base de
datos están explicadas (en distintas asignaturas), pero al no establecida y identificada
correctamente la necesidad, no sirve la explicación de lo uno o de lo otro.
Ya en un ámbito empresarial el desarrollo de software puede encontrarse con las
siguientes circunstancias:
-
Poco entendimiento de los procesos y necesidades empresarial.
-
poco entendimiento de la empresa sobre el rol de desarrollador de sistemas.
-
Poca interacción y compresión de su propio equipo de trabajo
Más concretamente la asocialidad y falta de iteración personal del desarrollador
pueden generar los siguientes problemas:
-
No entender claramente las requisitos del software a desarrollar, creando soluciones técnicamente correctas pero que no resuelven ningún problema real, con lo que se alagara la construcción del sistema de forma sustancial y se reducirá la calidad de este.
-
Fallar en su capacidad de negociación, lo cual encararía a dos escenarios:
-
Problemas para negociar tiempos, recursos y alcancen en sus proyectos, lo que acarreara retrasos, e inconformidad en el cliente y en la misma empresa.
-
Problemas para negociar un salario adecuado. no sabrá valoran adecuadamente cuánto vale su trabajo, aceptando una retribución inferior a la se merece. Este tema es más profundo de lo que parece, por que crea un precedente en mercado, si los desarrolladores de software no sabe negociar apropiadamente su salario, su precio o valoración bajara. Esto quiere decir que el sueldo que pueden cobrar los desarrolladores de software bajara en su conjunto, por que las empresas podrán pagar menos dinero para contratar a un programador (es como querer algo por un precio justo, cuando otra persona lo está regalando)
-
Los siguientes consejos pudieran ser útiles:
Es importante participar en la reuniones. A veces los desarrolladores adoptan
una actitud pasiva esperando recibir instrucciones, sin saber muy bien porque están
en una reunión en particular. En el mejor de los casos se quedan esperando a que
alguien le ceda la palabra para poder intervenir. Es necesario que el desarrollado
se “ceda” la palabra al es mismo, que busque activamente su participación, que exprese
sus ideas y sus inquietudes sin que nadie se las pregunte, es completamente necesaria
y beneficiosa la participación del desarrollo en la reuniones, y eso es algo que
solo el mismo desarrollador (y nadie mas) puede provocar.
No solo hay que hacer un buen trabajo, tenemos que promocionar nuestro trabajo, hacer
relevante nuestro trabajo, “No basta con ser bueno, hay que parecerlo”.
frecuentemente los desarrolladores que realizan un trabajo de calidad, esperan que
su trabajo hable por sí solo, lo cual generalmente no pasa. Un desarrollo de calidad
no solo implica la resolución de las necesidades presentes sino estar preparado
para solucionar las futuras (debe ser escalable), y eso algo que no se percibe inmediatamente,
es algo que se tiene que se debe explicar (y vender correctamente).
también es necesario que realice actividades fuera de la oficina que le ayuden a
socializar con los mismos compañeros, pueden ser deportes (como futbol o tenis),
o algún otro tipo de actividad alejado de las computadores. En cualquier caso es
muy recomendable hacer algún tipo de ejercicio físico, esto ayudara a desentrenarse
y cuidar la salud (Es mejor tener un condicionamiento físico adecuado que nos ayude
tanto a mantenernos despiertos, como a dormir cuando debamos, que a atiborrarnos
de café o bebidas con cafeína, que solo nos alteran el sueño y el estado de ánimo).
Como conclusión, la proactividad es el elemento clave, un desarrollador debe ser
el que inicie el proceso a su propio crecimiento, debe saber (y buscar) interactuar
empresarialmente. Es muy raro se den oportunidad, por si solas, el desarrollador
debe fabricar las suyas.