Hay muchos tipos diferentes de programadores que desarrollan software. ¿O es programación de computadoras? ¿O es codificación? Todas estas son etiquetas o casillas que usamos para clasificar a las personas y sus habilidades. Al igual que distinguimos entre probadores, codificadores, gerentes, arquitectos, diseñadores, CLO, etc., solo que estos son mucho más obvios. Entonces, ¿qué hace exactamente que un codificador sea un codificador o un programador un programador? Podemos usarlos indistintamente para significar lo mismo, pero desde una perspectiva externa, me gusta pensar en ellos como insignias o rayas. Algo que ganas con tiempo, paciencia, sabiduría y experiencia.

Algunas personas simplemente tienen ciertas cualidades que las hacen buenas, malas, mejores o peores que la otra persona. Para determinar simplemente cuáles podrían ser, propongo cinco cajas o etiquetas.

  1. El usuario de la herramienta
  2. El usuario de la herramienta es el menos experimentado de todos. Tiene suficiente conocimiento para hurgar en herramientas como Visual Studio 2005 y ensamblar una GUI simplemente arrastrando y soltando widgets en un formulario. Para alguien que no conoce más, porque produce resultados que a menudo parecen convincentes (provocados por los esfuerzos de la herramienta y no por sus propias acciones), piensan muy bien en él y / o sus construcciones. ¿Por qué el término construcción y no producción o desarrollo? Bueno, realmente no desarrolla nada. Construye cosas con el uso de herramientas cada vez más sofisticadas. Una buena gerencia que tiene pistas o conoce la tecnología verá más allá de esto, pero desafortunadamente (o afortunadamente para los mejores programadores del mundo) todavía encuentra su lugar. Este es el peor tipo de desarrollador de software. Cuando algo debajo del capó se rompe o él / ella necesita modificar su comportamiento para hacer algo sustancial, olvídelo.

    Idiomas de elección: ¿Realmente importaría? Es todo un galimatías
    Software de elección: Todas y cada una de las herramientas RAD que proporcionan un desarrollo rápido de interfaces clicky

  3. El pirata informático
  4. El hacker ha ido más allá de la noción de esperar que las herramientas hagan todo el trabajo por él. Posee habilidades de desarrollo básicas o rudimentarias. No tiene conocimiento de lenguajes compilados, pero entiende los lenguajes de scripting lo suficientemente bien como para juntar partes y piezas. Por lo general, puede copiar y pegar scripts y modificar variables y funciones. Por lo general, no comprende el panorama general del desarrollo de nada, pero puede piratear algo que se le da con suerte. Él rastrea la web y los foros en busca de fragmentos de código para hacer lo que quiere y los ensambla.

    Idiomas de elección: Javascript, html, css, tal vez comprensión limitada de php
    Software de elección: Editores de texto simples, tal vez editores de texto que brinden resaltado de sintaxis

  5. El programador
  6. El programador tiene un buen conocimiento de lo que es codificar y escribir software. No depende tanto de las herramientas como de su propia comprensión de los idiomas. No está tan preocupado por las herramientas que necesita, ya que se da cuenta de que las herramientas no van a hacer el trabajo por él. Sin embargo, este descuido le impide darse cuenta de los beneficios que pueden proporcionar a un programador más experimentado. Esta falta de familiaridad con herramientas y bibliotecas; como resultado de una exposición y experiencia limitadas en el campo más amplio, lo ensombrece de los entornos de proyectos más grandes que requieren control de versiones, muchos desarrolladores y entornos más grandes. Simplemente no está familiarizado con eso. De manera similar, aunque es un programador capaz, no necesariamente piensa en cómo otros usarán lo que escribe y, como tal, no encaja realmente en el entorno de creación de equipos. Es un hábil “programador solitario”. Puede que tenga habilidades, pero nadie puede trabajar con él porque no piensa por encima o por debajo de la línea de código que escribe.

    Idiomas de elección: C ++, Java, C #, Visual Basic

  7. El desarrollador
  8. El desarrollador es un programador experimentado que comprende que el desarrollo de software implica mucho más que las líneas de código que lo componen. Posee una comprensión mucho mejor de los conceptos y principios de diseño de software que el programador y piensa en un problema en su totalidad. Si bien tiene una buena comprensión de este problema y está abierto a verlo desde la mayoría de los ángulos, no necesariamente comprende todo el dominio al que se aplica. Con habilidades de programación experimentadas, no depende de las herramientas, sino que las usa para aumentar la productividad.

    Idiomas de elección: Generalmente prefiere el código administrado sobre el código no administrado, ya que se da cuenta del aumento de productividad que lo acompaña.
    Software de elección: Los IDE de gran desarrollo; cualquier cosa que proporcione inteligencia, resaltado de sintaxis, fragmentos de código, plantillas, formato, etc.

  9. El arquitecto
  10. El arquitecto es la crème de la cosecha. Es un desarrollador de software preparado con más de diez años de experiencia en el haber. Ha pasado mucho más allá del aspecto técnico del desarrollo de software y la comprensión del buen diseño de soluciones. Puede entrar en un dominio empresarial y conectar los puntos que las personas dentro del dominio no pudieron. Apoyándose en muchos años de experiencia sobre lo que funciona y lo que no, a menudo es contratado como consultor por su valiosa experiencia.

Este conjunto de habilidades mucho más amplio pero especializado lo pone en una gran demanda. Cuando una empresa quiere traer a los peces gordos y llamar a un consultor. Este es el chico.

Idiomas de elección: La programación fue algo que se dejó a su juventud, sus servicios de consultoría le obligan a escribir muy pocas líneas de código.
Software de elección: Herramientas de modelado, herramientas métricas y herramientas con fines comparativos.

¿Qué tipo de programadores ha conocido o con los que ha trabajado en su vida?