paint-brush
Lo que separa a los mejores desarrolladores de la multitud: 10 rasgos críticospor@zawistowski
12,049 lecturas
12,049 lecturas

Lo que separa a los mejores desarrolladores de la multitud: 10 rasgos críticos

por Wojciech Zawistowski10m2023/05/01
Read on Terminal Reader

Demasiado Largo; Para Leer

Trabajamos duro para mejorar nuestra tecnología y habilidades sociales. Pero damos por sentado los rasgos de nuestro carácter, una parte fija de lo que somos. Esta forma de pensar es dañina. Sus características son incluso más críticas para una exitosa carrera de desarrollo de software que sus habilidades. Y están bajo tu control. Los verdaderos desarrolladores sénior reconocen eso y desarrollan deliberadamente sus características. Este es el superpoder que los hace destacar entre la multitud y acelera su carrera.
featured image - Lo que separa a los mejores desarrolladores de la multitud: 10 rasgos críticos
Wojciech Zawistowski HackerNoon profile picture
  • Trabajamos duro para mejorar nuestra tecnología y habilidades sociales. Pero nuestros rasgos de carácter, nuestra mentalidad, lo damos por sentado. Una parte innata y fija de lo que somos. Y así, lo dejamos funcionar en piloto automático.


  • Esta forma de pensar es dañina. Su mentalidad no solo es fundamental para una carrera exitosa en el desarrollo de software (quizás incluso más que sus habilidades), sino que también está bajo su control.


  • Los verdaderos desarrolladores sénior reconocen que los rasgos de carácter son maleables, son conscientes de su forma de pensar y trabajan deliberadamente en ello. Este es el superpoder que los hace destacar entre la multitud y acelera su carrera.


  • En esta publicación, analizaré los 10 rasgos más críticos de un desarrollador exitoso, por qué son importantes y compartiré algunos consejos sobre cómo puede moldearlos.

3 cosas que necesita para tener éxito como desarrollador de software

El desarrollo de software profesional es una disciplina compleja que requiere un conjunto diverso de habilidades para tener éxito. Podemos agruparlos en tres categorías principales:

Habilidades técnicas

Este es el grupo más obvio. Para ser un desarrollador exitoso, debe ser bueno en su oficio: lenguajes y marcos de programación, principios de código limpio, arquitectura, pruebas, depuración, etc. También debe ser hábil con sus herramientas: control de versiones, línea de comandos e IDE.


Sin embargo, las habilidades técnicas por sí solas no lo llevarán lejos en una configuración profesional basada en equipos. Es por eso que también necesita habilidades blandas.

Habilidades blandas

Para poder trabajar en grandes proyectos comerciales, necesita un conjunto sólido de habilidades blandas: trabajo en equipo, comunicación, gestión y planificación de proyectos, trabajo remoto, autoorganización, aprendizaje, productividad personal y similares.


Muchos de nosotros encontramos estas habilidades menos divertidas que las técnicas y, por lo tanto, a menudo las descuidamos, por lo que ya pueden separar a los desarrolladores profesionales sólidos de la multitud. Pero al menos los reconocemos.


Sin embargo, también hay una tercera categoría, que es igualmente importante pero pasa desapercibida para casi todos, incluso los buenos desarrolladores.

Mentalidad

La mentalidad es un poco similar a las habilidades blandas, pero las "habilidades" que la componen son rasgos más fundamentales y básicos: curiosidad, paciencia, empatía, valor, adaptabilidad, etc.


En cierto nivel, sabemos que estos rasgos son importantes para una carrera exitosa en desarrollo de software. Pero debido a que parecen una parte innata y fija de nuestra personalidad, no intentamos aprenderlos deliberadamente de la misma manera que aprendemos técnicas de gestión de proyectos o productividad personal.


Esto nos hace ciegos a una parte enorme e importante de nuestro conjunto de habilidades y puede perjudicar gravemente nuestra progresión.


[Para obtener una perspectiva aún más completa sobre cómo avanzar en su carrera como desarrollador profesional, consulte mi "Guía definitiva para convertirse en un VERDADERO desarrollador senior" en GitHub]

Por qué ser ciego a su forma de pensar puede poner en peligro su carrera

El desarrollo de software es un campo complejo, a veces frustrante e increíblemente rápido. Aprender, crecer y mantenerse relevante como desarrollador (y no agotarse en el proceso) requiere una combinación específica de rasgos de carácter.


Al mismo tiempo, es un juego 100% de equipo. Los piratas informáticos solitarios no tienen cabida en el desarrollo de software profesional, sin importar cuán buenos sean técnicamente. Y funcionar bien en un equipo requiere otro conjunto de rasgos aparentemente opuestos.


La mentalidad es algo diferente a las habilidades. Comprender los principios de desarrollo Agile no es lo mismo que ser adaptable y estar abierto a cambios frecuentes.


Y conocer las técnicas de depuración no es lo mismo que tener la curiosidad y la persistencia para realmente disfrutar persiguiendo el problema durante varias horas sin agotarse o desanimarse.


Pero si bien estos rasgos pueden parecer fijos e innatos a nuestra personalidad, son igualmente aprendibles como habilidades.


Sin comprender qué rasgos son críticos para un programador y perfeccionarlos deliberadamente con el tiempo, nunca alcanzará su máximo potencial. Los verdaderos desarrolladores senior lo saben, son conscientes de su forma de pensar y trabajan continuamente para mejorarla.


Este es el diferenciador, el superpoder que separa a los mejores desarrolladores de la multitud.


Bien, pero ¿qué rasgos son los más importantes? Profundicemos un poco más en los detalles.

10 características de un verdadero desarrollador senior

1. Curiosidad

Si tuviera que resumir en una frase de qué se trata el desarrollo de software, diría que se trata de aprender. Debe mantenerse actualizado con las tecnologías y los procesos de desarrollo de software en constante evolución.


Debe aprender los detalles profundos de dominios comerciales complejos (varios a lo largo de su carrera). Analizar y clarificar requisitos es aprender. Investigar es aprender.


La optimización del rendimiento y la depuración, en otras palabras, profundizar en el funcionamiento interno del código, también es un tipo de aprendizaje.


El desarrollo de software también consiste en trabajar con personas (y para personas).


Trabajará en equipos multifuncionales con un conjunto diverso de personas de diferentes especializaciones y antecedentes (hoy en día, en la era remota, muy probablemente de múltiples países y culturas).


Tendrás que entender "negocios". Tendrá que comprender y resolver los puntos débiles y los problemas de los usuarios.


Sin una buena dosis de curiosidad, no solo será menos efectivo en todas esas cosas, sino que también se agotará bastante rápido.

2. Afinidad por la resolución de problemas

El desarrollo de software es un rompecabezas gigante: un flujo infinito de problemas para resolver. El motivo por el que te contratan como desarrollador es para solucionar los problemas de tu empresa y de tus clientes.


Para hacer esto, debe resolver problemas organizativos (cómo funcionar como equipo, cómo organizar su trabajo, qué procesos usar) y problemas técnicos (lógica, arquitectura, rendimiento, etc.).


Estos problemas consisten en problemas anidados aún más pequeños, hasta problemas atómicos como cómo diseñar y nombrar una función particular o prueba unitaria.


Si no disfruta resolviendo estos rompecabezas, si no tiene la habilidad de descifrar y desenredar problemas, su carrera de desarrollo de software será una lucha.

3. Paciencia

Convertirse en un verdadero desarrollador senior requiere años de práctica deliberada. También experimentará muchos contratiempos en el camino. Desarrollar su carrera es gratificante, pero también un proceso lento y, a veces, doloroso.


Para lograr la excelencia y llegar a la cima, debe estar preparado para la dedicación de por vida. Y esto requiere mucha paciencia.


La paciencia también es fundamental para muchas cosas relacionadas con nuestro trabajo: manejar el soporte técnico, trabajar con usuarios que no son muy expertos en tecnología y hacer frente a la burocracia organizacional. Además, es una gran ayuda para resolver problemas.


Y no podrá seguir trabajando en una industria tan dinámica y en constante cambio como la tecnología sin paciencia.

4. Grano (en la cantidad justa)

El desarrollo de software requiere mucha persistencia. Cazando bichos. Descifrar API y bibliotecas mal documentadas. Desenredando el código heredado. Seguimiento de cuellos de botella en el rendimiento. Incluso simplemente manteniendo un enfoque profundo durante largos períodos de tiempo.


Lucharás, fallarás, te atascarás y te frustrarás mucho, sin importar qué tan alto seas. Y necesitará mucha arena para abrirse paso y no quemarse.


Pero también debe comprender cuál es la cantidad correcta de arena. ¿Cuál es el punto óptimo entre golpearse la cabeza contra la pared de forma improductiva durante horas y días frente a interrumpir constantemente a su equipo al solicitar asistencia de inmediato cuando se encuentra con el más pequeño bache en el camino?

5. Inteligencia emocional

El desarrollo de software gira en torno a las personas y los equipos. Trabajará muy de cerca con sus colegas a nivel individual: empareje programas, depure juntos y revise su código.


También trabajará con ellos en una configuración de equipo: lluvia de ideas, planificación y toma de decisiones como grupo. Y esta colaboración es desordenada: su trabajo se superpondrá o entrará en conflicto, y tendrá opiniones diferentes.


Negociará su hoja de ruta con la gerencia. Finalmente, para crear un gran producto, deberá ponerse en el lugar de sus usuarios.


Además de eso, todas estas personas provienen de diversos orígenes, tanto técnicos como no técnicos. Son apasionados. Tienen opiniones fuertes. A veces pueden tener caracteres difíciles.


Y su éxito como desarrollador depende de qué tan bien pueda establecer una buena relación con ellos. Sin una alta inteligencia emocional, será simplemente imposible.

6. Habilidad para mantener tu ego bajo control

El desarrollo de software (y el trabajo en equipo en general) es un acto de equilibrio. Por un lado, te contratan por tu experiencia. Se espera que tenga opiniones sólidas y que guíe a personas menos expertas en tecnología o más jóvenes.


Por otro lado, trabajarás con compañeros de equipo igualmente experimentados y opinantes que desafiarán tu punto de vista y con los que tendrás que tomar decisiones grupales.


Tu ego a menudo resultará herido en el proceso. Debe poder mantenerlo bajo control, pero sin retirarse ni desconectarse.


Debes ser obstinado pero no fanático. Tenga un punto de vista fuerte pero manténgalo débil; estar abierto a ser convencido de lo contrario. Debes estar listo para defender tu opinión, pero también saber cuándo dejarlo ir, para no ser un idiota brillante y condescendiente.


Necesitas respetar al equipo, el negocio y los clientes. Ser capaz de estar en desacuerdo pero comprometerse. Y reciba comentarios constructivos (e incluso negativos) con gracia. De lo contrario, no podrá trabajar de manera efectiva en un equipo.

7. Adaptabilidad

Todo en el desarrollo de software se mueve muy rápido. Las tecnologías están en constante cambio. Las nuevas metodologías se vuelven populares. Las empresas pivotan.


A lo largo de su carrera, también cambiará proyectos, equipos, empresas y dominios comerciales. Incluso un solo proyecto es un acto constante de inspección y adaptación (especialmente en enfoques ágiles). Y su equipo también se reorganizará constantemente.


La mayoría de las personas son alérgicas al cambio. El cambio es difícil. Es incómodo. Es estresante. Ser adaptable y abierto al cambio lo diferenciará instantáneamente. No solo te permitirá subir a la cima de la escala de antigüedad, sino que también te permitirá permanecer allí durante mucho tiempo.

8. Confiabilidad

Lo repito hasta la saciedad, pero el desarrollo de software es un juego de equipo. Sus colegas, gerente y empresa: todos cuentan con usted para hacer su parte.


Nadie lo considerará un verdadero desarrollador senior, sin importar su experiencia tecnológica, si no pueden confiar en usted para que se encargue de su trabajo y cumpla sus promesas sin tener que ser microadministrado.


No significa que nunca puedas cometer errores. Las fallas suceden. Y las mejores empresas los ven como valiosas oportunidades de aprendizaje.


Pero para habilitar esto, debe poder recoger una pelota caída, recuperarse con gracia y confiar en que aprenderá de su falla y no la repetirá en el futuro.

9. Pragmatismo

El desarrollo de software profesional es un arte de concesiones. Necesitas comprometer constantemente la velocidad de desarrollo y la calidad. Equilibre lo nuevo y prometedor con lo probado y estable.


Camine por una delgada línea entre la ingeniería insuficiente y la excesiva.


Para tener éxito en el desarrollo de software profesional, debe ser muy pragmático. Debe comprender que nada es blanco o negro, y que ningún principio o patrón es válido en todas las situaciones.


Debe tener una gran intuición para hacer concesiones entre diferentes enfoques, tecnologías y soluciones; Siéntase cómodo tomando atajos, pero tenga una buena idea de cuánto.

10. Perspectiva positiva

Tu vida como programador no es todo sol y arcoíris. Te encontrarás con clientes molestos. Enfréntate a plazos ajustados. Su proyecto puede ser cancelado. Es posible que no esté de acuerdo con su equipo o administración, pero aún debe comprometerse y ejecutar.


También trabajará con código feo. (Sí, cada base de código tiene partes buenas y malas, incluso en las principales empresas como Google).


Te cansarás, te frustrarás y te molestarás.


Si dejas que la negatividad se apodere de ti, si empiezas a criticar y quejarte, no solo te desmotivarás a ti mismo, sino que también matarás la moral de tu equipo, lo que no llevará tu carrera muy lejos.


Necesitas estar sesgado hacia lo positivo. Sea optimista y alegre. Busque siempre un lado positivo. Sea la persona que anima a su equipo, acaba con el mal humor y restaura la moral. No solo te hará notar y ascender, sino que también hará que tu carrera sea más placentera y sostenible.

Bonificación: algunos consejos sobre cómo moldear deliberadamente su forma de pensar

Las habilidades, obviamente, se pueden entrenar, tanto las blandas como las técnicas. Puede mejorar tanto en la depuración como en la comunicación. Pero, ¿qué pasa con rasgos aparentemente innatos como la curiosidad o una perspectiva positiva? ¿Realmente puedes entrenarte para ser más optimista o curioso?


¡Sí tu puedes! Este es un tema amplio, digno de varios libros ("Mindset" de Carol S. Dweck es un excelente punto de partida). Pero permítanme compartir rápidamente un par de consejos:


  • Reconoce que tu mentalidad no es fija y que tus rasgos son maleables.


  • Construya la autoconciencia. Observa cómo reaccionas en diferentes situaciones. Trate de entender lo que lo hace sentir de una manera particular (curioso o aburrido, positivo o gruñón, ansioso o defensivo).


  • Retrospeccione su comportamiento desde la perspectiva de uno o dos días. ¿Tu opinión era realmente pragmática o era tu ego el que hablaba? ¿Cómo podrías haber actuado diferente?


  • Prepárate con anticipación. Planifique con anticipación cómo se comportará la próxima vez en una situación similar e identifique el disparador correcto que le recordará su plan cuando llegue el momento.


  • Expóngase a situaciones que le permitan ejercitar y fortalecer los rasgos deseados. Busque activamente tales oportunidades.


  • Concéntrese en un solo rasgo durante algún tiempo. Hará que sea más fácil encontrar oportunidades para ejercitarlo y aumentar su autoconciencia de este rasgo.


  • Reencuadre. Sé consciente y deliberado sobre cómo te hablas a ti mismo. La idea no es estúpida, es sorprendente. Ese escalofrío no es ansiedad, es emoción. El problema no es frustrante, es interesante.


  • Solicite ayuda. No dude en pedir retroalimentación a su colega o gerente, o incluso convertirse en su "socio de responsabilidad" que detectará y señalará su comportamiento no deseado.


También te animo a que aprendas un poco sobre los sesgos cognitivos y la formación de hábitos. Esta es una disciplina bien desarrollada, con una gran cantidad de conocimientos y bastante divertida de explorar.

Línea de fondo

Si quieres ser un verdadero desarrollador senior , tienes que ser uno completo. Debe tener la combinación correcta de habilidades tecnológicas, habilidades blandas y rasgos de carácter, y no puede ignorar ninguna parte de este trío.


Los rasgos de carácter son la parte más complicada. La mayoría de los desarrolladores los descuidan porque no son conscientes de ellos, no saben cuáles son importantes o no creen que sean maleables.


Pero si puede superar esta forma de pensar defectuosa, si puede cambiar su forma de pensar, puede convertirla en un superpoder que elevará su carrera y lo hará realmente sobresalir.