¿Cuáles son las señales de que eres un desarrollador de software experto?

Estas son las señales de que usted es un desarrollador de software experto:

  1. Cuando se enfrenta a una tarea de desarrollo, su primer instinto es pensar, dibujar diagramas y definir los requisitos antes de comenzar a escribir cualquier código fuente.
  2. Trabaja de manera independiente y eficiente para completar un proyecto, sin pedir ayuda a otra persona, y trabaja bien con otros para coordinar e integrar sus esfuerzos.
  3. Los lenguajes de programación que está utilizando son de segunda naturaleza para usted, y su atención se centra en el problema en sí y no en los detalles de la sintaxis del lenguaje.
  4. Puede explicar cómo funciona su código a alguien con cero experiencia, y realmente lo entienden. (Como dijo Einstein, “Si no puedes explicarlo simplemente, no lo entiendes lo suficientemente bien”).
  5. Otros acuden a usted en busca de ayuda, y usted está seguro de que los está guiando por el camino correcto, y no solo inventando cosas. Y no tienes miedo de decir “No sé”.
  6. Sabe dónde encontrar la información que necesita pero no tiene. Te das cuenta de que no puedes tener todo en tu cabeza, pero sabes dónde conseguirlo cuando lo necesitas.
  7. En realidad, desea desarrollar software, aunque nadie lo obligue a hacerlo.
  8. Usted realmente comprende cómo funciona la CPU, cómo funciona la administración de memoria y cómo funcionan los dispositivos, incluso si sus lenguajes de programación o bibliotecas le ocultan todo esto.
  9. Entiende las advertencias y los errores generados por sus herramientas de desarrollo, y puede depurar su propio código. Cuando sea necesario, puede depurar hasta el nivel de instrucción de la máquina.
  10. Ambos están dispuestos y pueden probar su propio código de manera efectiva.
  11. Cuando se informa un error contra su código, su reacción inmediata es investigar y solucionar el problema, y ​​no es a la defensiva o señalar con el dedo.
  12. Si hay una persona o equipo de control de calidad que prueba su código, está agradecido por sus esfuerzos y no los trata como adversarios. Si necesitan orientación, usted asume el papel de un mentor útil.
  13. Puede revisar el código de otra persona y proporcionarle comentarios constructivos.
  14. Puede superar la mentalidad de “no inventado aquí” (NIH) y adoptar bibliotecas y marcos para facilitarle la vida.
  15. Le importa sinceramente la próxima persona que tendrá que trabajar con su código, por lo que desarrollará un código legible, fácil de mantener y portátil. Usted trata el mantenimiento como su responsabilidad, incluso si será responsabilidad de otra persona.
  16. Reconoce que no se trata de cuántos idiomas conoce, sino de qué tan bien comprende los conceptos fundamentales y qué tan fácil es aprender un nuevo idioma y aplicar esos conceptos.
  17. Entiende las estructuras de datos y los algoritmos, y cómo comparar y elegir los correctos para la tarea en cuestión.
  18. Reconoce y acepta el hecho de que el proceso de aprendizaje y mejora de sus habilidades nunca terminará … nunca.
  19. Eres lo suficientemente humilde como para reconocer que no lo sabes todo, y que siempre hay otros que saben más que tú.
  20. Eres lo suficientemente sabio como para tener un escepticismo saludable sobre el último reclamo, paradigma o tecnología de bala de plata. Usted hace su propia investigación y forma su propia opinión, en lugar de adoptar automáticamente las opiniones de los demás.
  21. Ya no necesita leer una lista de verificación de signos de que es un desarrollador de software experto. Simplemente eres.

Ya hay un montón de buenas respuestas aquí, pero agregaré algunas más que no veo.

Digamos que trabajas en un proyecto con un grupo de otros desarrolladores. Algunos signos adicionales son:

  1. Se le considera uno de los desarrolladores “senior” del equipo. Nadie sabe exactamente lo que eso significa, pero todos saben que eres tú.
  2. Cuando los no desarrolladores del proyecto (analistas, propietarios de productos, etc.) quieren comprender cómo funciona algo en el software, con frecuencia vienen a preguntarle.
  3. Cuando los probadores que trabajan en el producto quieren saber cómo funciona algo, vienen a preguntarle, incluso cuando no haya trabajado necesariamente en el código que probarán.
  4. Cuando los analistas / propietarios de productos desean considerar agregar nuevas funcionalidades al sistema, sienten que es una buena idea ejecutarlo primero antes de lanzarlo al equipo más grande.
  5. Cuando los desarrolladores necesitan estar representados en una reunión interfuncional, te piden que seas ese representante.
  6. El equipo de marketing / ventas está tratando de conseguir el próximo gran cliente y, para agregar un aire de legitimidad a las discusiones, ¿adivina a quién le piden que asista para responder cualquier pregunta “técnica”? (OK, este no es mi favorito)
  7. El vicepresidente senior / director de ingeniería / CEO quiere tener una idea de lo que realmente está sucediendo “en las trincheras” para que él / ella venga a hablar con usted y se sienta cómodo de que recibirá una respuesta honesta, que casi con seguridad no va a ser lo que él / ella quiere escuchar (sí, lo siento, estamos haciendo nuestro mejor esfuerzo, pero ese plazo aún es imposible).
  8. Cuando es hora de comenzar a mirar qué hacer para el próximo sprint / iteración / fase, a menudo se le pide que ayude al grupo a determinar qué debería ser.

Tenga en cuenta que ninguna de las cosas anteriores implicaba escribir ningún código. Por cierto, se deben agregar algunas viñetas adicionales:

  1. Sea capaz de hacer todas las cosas enumeradas anteriormente y aún así realizar sus propias tareas de codificación
  2. No seas un idiota arrogante y mantente humilde
  3. Sepa que, a pesar de ser “senior”, usted es parte de un equipo. Regocíjate en los éxitos del equipo y comparte sus fracasos

¿Lo preguntas porque quieres saber si aún eres un desarrollador experto o lo preguntas para que puedas encontrar el camino de menor resistencia a la grandeza percibida?

Si está preguntando por la primera razón, entonces lo sabrá. Es así de simple. Si ya eres un desarrollador practicante, obtendrás tus momentos de centavo y sabrás cuándo suceden.

Si está solicitando la última de las 2 razones, lo siento, pero no hay atajos. Trabajas duro, estudias duro y practicas, y eventualmente comenzarás a obtener los momentos de centavo que mencioné anteriormente.

Si está preguntando esto porque es un gerente, está tratando de determinar cuáles de sus desarrolladores son “geniales”, entonces lamento decepcionarlo, pero tampoco hay un libro de reglas para eso.

¿Qué hace a un buen desarrollador?

Muchas cosas.

Algunas personas podrían considerarme un buen desarrollador, pero otras personas me describirían como basura. Aquellos que me describen como basura pueden hacerlo por varias razones, como no estoy de acuerdo con su punto de vista, no uso las mismas herramientas que ellos, o las mismas técnicas, o un gerente de tecnología puede etiquetarme como basura porque No digo “qué tan alto” cuando me pide que salte.

Otros pueden llamarme excepcional, porque tienen poco o ningún conocimiento de lo que hago, por lo que todo lo que hago les parece mágico (los padres que exageran a sus hijos como genios técnicos, simplemente porque pueden usar la tecnología moderna sin esfuerzo, caen en esto categoría)

El punto es que conocerás a un buen desarrollador de software cuando veas uno, y si tienes algún conocimiento técnico sobre ti, definitivamente los conocerás cuando los veas.

Es uno de esos casos en los que solo tienes que confiar en tu instinto, seguir la corriente, pero no tratar de manejarlo.

Sin embargo, te daré una pista si eres un pesebre … Más dinero y más mano de obra NO equivale a un trabajo mejor y más rápido. Los desarrolladores prosperan en desafíos mentales, sus solucionadores de problemas e innovadores. déles tanta libertad para respirar, déjelos pensar por sí mismos, permítales innovar en el trabajo que ya hacen. La razón por la cual las compañías como Google le dan al personal las 24 horas del mes para trabajar en sus propios proyectos internos … Es porque ayuda a que sus buenos desarrolladores brillen, y hace que sus grandes brillen.

Sabes construir software

Esto es bastante obvio. Es la parte técnica del trabajo en la que todos se centran.

Tu software no falla. El usuario puede usar intuitivamente su GUI. Todas las características requeridas se codifican correctamente y funcionan según las especificaciones. Sea lo que sea para su pila de tecnología específica, la construye para que el usuario no tenga ningún problema con su software.

Esta es la parte del trabajo que puedes aprender en la escuela y al construir muchos proyectos a lo largo del tiempo.

Conoces tu industria

Si trabajas en una empresa o trabajas en un campo específico, necesitas un poco de conocimiento de la industria.

Por ejemplo, si usted es ingeniero de software en un banco, puede desarrollar conocimientos especializados en gestión de riesgos. Aprenderá todas las mejores prácticas en gestión de riesgos para la banca y construirá su software en consecuencia.

O tal vez trabajas en una empresa de marketing de contenidos para que aprendas cómo funciona esa industria.

Independientemente de la industria en la que trabaje, aprende a aplicar sus habilidades técnicas a esos problemas de la industria. Como resultado, ayuda a su empresa a desarrollar un mejor software.

Mejoras a tu equipo

Aquí ayuda a los miembros de su equipo a mejorar sus habilidades técnicas y de la industria.

Puede enseñar a las personas de su equipo nuevas técnicas de codificación, hacer revisiones de códigos o compartir conocimientos de la industria. Solo ayuda a todo tu equipo a ser más productivo.

La gerencia confía en ti

Algunos desarrolladores de software tienen la habilidad de traducir la jerga técnica en algo que los ejecutivos no técnicos pueden entender. Y algunos otros desarrolladores de software tienen la habilidad de traducir los objetivos comerciales en especificaciones técnicas.

Si puede aprender a hacer ambas cosas, la gerencia confiará en usted. Probablemente se convertirá en un líder o gerente de equipo en algún momento. Si llega a este punto, además de tener las 3 habilidades anteriores, es un desarrollador de software muy hábil y muchas compañías tendrían suerte de contar con usted.

Más consejos de carrera aquí: Sube la escalera

Hay momentos y lugares donde realmente no importa lo que otros piensen de ti. Hay momentos y lugares donde tu percepción de ti mismo es más importante que la percepción que tus compañeros tienen de ti. Sin embargo, el desarrollo de software (no toda la programación, pero definitivamente el desarrollo de software) es un esfuerzo de equipo. Una de las principales señales de ser experto es que sus compañeros lo tienen en alta estima. Piensan mucho en ti y en tu trabajo. Te recomiendan cuando sea apropiado. Buscan su opinión sobre todo tipo de tareas. Hacen esto porque les has demostrado que puedes resolver problemas de manera efectiva y puedes ayudar a otros a resolver sus problemas.

¿Cómo se gana la estima de sus compañeros?

  1. Preocúpese por la calidad de su trabajo, que incluye escribir documentación y pruebas
  2. Escribe al estándar de codificación, incluso si es estúpido
  3. Sé considerado, así que detente y piensa antes de actuar; solo porque tengas una solución no significa que sea una buena solución
  4. Si situaciones excepcionales justifican actuar rápidamente, limpie su desorden lo antes posible
  5. Aprenda cuándo una solución “suficientemente buena” es suficiente / apropiada
  6. Busque soluciones de forma independiente
  7. Solicite información cuando el n. ° 5 no conduzca a respuestas en un período de tiempo razonable, o si no está seguro del mejor enfoque
  8. Cuando otros se acerquen a usted con problemas, déjelos decir lo que piensan y no lleguen a conclusiones (tuve problemas con esto; estaba orgulloso y avergonzado cuando esto apareció en una revisión y un compañero aparentemente me llamó) por saltar y no dejar que terminara, pero admitió, “generalmente tiene razón”, pero no me habría hecho daño darle 90 segundos adicionales para terminar sus pensamientos)
  9. Haga preguntas cuando otros pidan ayuda; Una buena regla general es que, si alguien pide más que ayuda trivial (por ejemplo, no “dónde está el baño”), haga al menos una pregunta antes de proponer cualquier solución.
  10. Habla claro
  11. Documente y siga sus compromisos
  12. Exprese su opinión cuando tenga inquietudes o no esté de acuerdo, pero sea cortés y nunca haga ataques ad hominem
  13. Acceda a las decisiones del equipo, incluso si no está de acuerdo, una vez que haya transcurrido el período de discusión
  14. Por amor a todo lo que es computable, sé bueno y practica la refactorización

¿De dónde vino esta lista?

  • Mis éxitos y fortalezas
  • Mis fracasos y debilidades
  • Observando a otros
  1. Sus estimaciones de tiempo para las tareas de desarrollo de software suelen ser precisas
  2. Usted está familiarizado con la mayoría de las herramientas y bibliotecas de su dominio y ha descubierto la forma más rápida de aprender nuevas herramientas y bibliotecas.
  3. Mantiene un conjunto de piezas de código, patrones y objetos reutilizados en su propia biblioteca o en una biblioteca compartida y casi puede usarlos con los ojos vendados, estas piezas reutilizadas lo hacen mucho más productivo
  4. Otros desarrolladores le hacen preguntas mucho más de lo que le hacen otras preguntas, para escapar de esto, llega a la oficina muy temprano, muy tarde o nunca
  5. tiene suficientes solicitudes de trabajo que siempre está trabajando en un proyecto que le parece gratificante e interesante
  • Conoces los defectos del marco aplicable, solo con mirarlo.
  • Usted conoce algoritmos que son robustos, cuando se necesita robusto; performant, cuando se necesita performant.
  • El dominio del proyecto y sus peculiaridades le son familiares.
  • Usted sabe cómo hacer código mantenible y útil.
  • Eres diligente en la búsqueda de errores.
  • Usted prueba casos extremos y de esquina; pero no necesariamente los codifique.
  • Perfila su código y lo mantiene modular.
  • Utiliza técnicas avanzadas de prueba de blackbox para detectar posibles errores que quizás no haya pensado.
  • Mejoras las especificaciones o creas una buena.
  • Haces la menor cantidad de trabajo para lograr lo anterior.

Personalmente, no soy un gran admirador del estilo de desarrollo pesado de arriba hacia abajo. Prefiero la creación de prototipos funcionales, para poder bloquear la funcionalidad principal y los casos de borde / esquina antes de que se convierta en un problema.

La interfaz de usuario debe ser opcional; y se deben integrar suficientes ganchos en el ciclo de vida del programa para permitir una experiencia de usuario orientada al rendimiento. La mayoría de las veces, la parte difícil no es el código, que es típicamente (debido a su naturaleza modular) pequeño y bien pensado; está diseñando la interfaz de usuario para que no apesta cuando comienzas a hacer tareas complejas.

Esto lo vi como un requisito para un puesto en @Zalando (empresa). Simplemente me encantaron las líneas. Me sorprende que nadie lo haya mencionado en su respuesta. Son:

1) Respetas el código.

2) Dejas el código mejor de lo que lo recibiste.

Estas dos líneas me impresionaron enormemente y son verdaderas cualidades de un profesional, independientemente de su profesión. Sin estos no puedes sobresalir.

  1. Dejas de abstraer demasiado.
  2. Te das cuenta de que los idiomas no importan tanto. (Pero las comunidades importan y tú eres parte de una).
  3. Piensas más de lo que codificas.
  4. No tienes miedo de empezar de nuevo.
  5. No tienes miedo de hacerlo.
  6. No tienes miedo de hacerlo bien.
  7. Puedes subir o bajar del tren de bombo sin lastimarte.
  8. Sabes cuándo alguien más debería codificar algo.
  9. Te importan más las personas que tu código.
  10. Te regocijas en todo gran trabajo como si fuera tuyo.

Festina lente,

Klemz

Me gustaría agregar una línea corta y dulce de mi propia vida

# El día en que comienzas a ver todo, es decir (sitio web, aplicación, software, herramientas, bibliotecas, máquinas e incluso imágenes) en su nivel micro arquitectónico, como si tu mente comenzara automáticamente a diseñar su arquitectura y modelo de trabajo dentro de tu imaginación sin siquiera preguntarle a nadie.

Ese día lo tienes 😉

He trabajado en startups tecnológicas / empresas establecidas durante más de media década. He trabajado con personas de todo el mundo y mi forma de elegir los mejores desarrolladores es:

  1. Solucionador de problemas
  2. Presta atención a los detalles.
  3. Experiencia práctica demostrable (proyectos anteriores, entrevista / prueba)
  4. Aprende nuevas tecnologías y consume cosas como el aire

Puede resolver los requisitos comerciales de un proyecto.

Usted es accesible a otros desarrolladores; no solo porque conoces las respuestas, sino que eres una buena caja de resonancia para las ideas.

Conoces a tu audiencia: los empresarios no siempre son técnicos. Apéguese al lenguaje común de su negocio cuando discuta soluciones / aclare requisitos.

Cuando consistentemente resuelves problemas lo suficientemente rápido como para mantener feliz a tu jefe, y esos problemas permanecen resueltos. La verdadera señal de un desarrollador de software débil es que tiene que corregir el mismo error cuatro o cinco veces antes de que Testing finalmente lo apruebe.

  1. Cuando su código adquiere una belleza y simplicidad que habla por sí mismo.
  2. El problema se resuelve con elegancia y sigue una buena estructura.
  3. la solución funciona maravillosamente (quiero decir eficientemente)
  4. Cuando eres como un oráculo y puedes ver futuras mejoras y mejoras en el código.

Señales de un desarrollador experto

  1. Siempre estás ocupado, no tienes tiempo que perder
  2. Ya no te preocupan las tareas y los proyectos.
  3. No le tienes miedo a los insectos
  4. Si algo está roto, intentará arreglarlo
  5. Intenta señalar errores en el código de otro desarrollador
  6. Piensa en términos de usar menos memoria y menos caché
  7. Piensa en cómo reescribir su código para que se ejecute más rápido
  8. Ha trabajado con más de un IDE y más de un idioma.
  9. Tu código ya no es borroso
  10. Sabes que no eres prefecto. Definitivamente sabes que hay muchas más cosas que aprender.

1.Tienes una buena aptitud y habilidades lógicas.

2. Nunca muestra signos de pánico o preocupación cuando obtiene un código complejo para escribir.

3. La mayoría de los buenos desarrolladores son geniales por naturaleza.

4. Su código tiene menos errores.

Un desarrollador experto no es el tipo que lo sabe todo.

Es el tipo que sabe ENCONTRAR LAS RESPUESTAS.

More Interesting

¿Cuál tiene un futuro mejor por delante, un desarrollador web o un desarrollador de software?

Soy desarrollador de software en una empresa que despidió a muchos desarrolladores. Los gerentes nos han dicho que solo es cuestión de tiempo. ¿Cómo sigo trabajando?

¿Los codificadores encuentran útil la documentación tediosa? ¿Cómo justificas esta sobrecarga?

¿Qué generaría potencialmente más rendimiento para el software: RAID 0 o 1, enlaces simbólicos o el diseño del software para utilizar múltiples unidades sin RAID?

¿Cómo es trabajar como desarrollador de software en seguridad informática?

¿Cuáles son los desafíos técnicos de construir una plataforma de mensajería en tiempo real?

Programadores o desarrolladores de software de Quora, ¿le resultó fácil o difícil aprender su primer idioma?

¿La mayoría de los desarrolladores de software odian las patentes de software?

Como desarrollador de software, ¿es un problema si veo la programación como un trabajo más?

¿Cuál tiene un futuro más prometedor: desarrollo de Android o desarrollo de software?

¿Por qué es tan difícil convertirse en un buen desarrollador de software?

¿Hay alguna computadora portátil específica que sea mejor para el desarrollo de software?

¿Cuáles son los principales malentendidos sobre el desarrollo de software?

¿Cómo manejan los desarrolladores de software lo desconocido y lo nuevo?

¿Cómo ganan dinero / sobreviven los desarrolladores de software mientras su software está en desarrollo antes de los ingresos?