Programar es fácil, lo realmente difícil es el Desarrollo de Software

Hace rato que no escribo ningún post técnico o que tenga que ver con “el gremio” y aprovecho un excelente articulo publicado en el NYTimies que acabo de leer (wauu ;) ) para generar un poco de polémica y conocer así lo que ustedes piensan.  Voy a tratar de explicarles el porque considero cierto lo que puse en el titulo

El articulo habla sobre qué actividades son intelectualmente exigentes y cuales no

…tocar con algún instrumento una pieza de música durante cuatro horas requiere cierto grado de atención, pero no es ni remotamente tan cognitivamente exigente como una reunión o fiesta con adolescentes . Gestionar los distintos estados de ánimos, poder integrarse en la dinámica del grupo, comprender las normas sociales, etc.

Participar en un grupo que funcione bien es muy difícil. Se requiere de la capacidad de confiar en la gente fuera de su círculo de parentesco, leer estados de ánimo, entender cómo encajan las piezas psicológicas que cada persona trae, si es que lo hacen

Por lo general las personas tienen el preconcepto de que aprender matemática es difícil, cuando en realidad solo depende del esfuerzo que pongamos en entender y no tanto de nuestra inteligencia. Es como andar en bicicleta. al principio es un poco difícil pero una vez que conocemos la técnica solo vasta con un poco de dedicación y practica para lograr el dominio. De hecho, la mayor parte de nuestra educación es eso: poner un mayor esfuerzo, para aumentar la recompensa (con la inversión suficiente de tiempo y esfuerzo podemos incrementar las notas en los exámenes y/o la cantidad de materias aprobadas

Pero existen muchas otras áreas de la vida en la que esta dinámica no funciona porque no son unidimensionales. Tratar con otros seres humanos es una de ellas. Podemos usar distintas estrategias (bondad / dureza / incentivos / auto-humillación, etc) para conseguir que las personas hagan lo que queremos. Lograr que un grupo de personas trabajen armoniosamente en pos de un mismo objetivo es realmente complicado ya que no basta con hacer frente a cada individuo sino que también tenemos que lidiar con la interacción entre ellos Por ejemplo, ¿cómo darle mayor responsabilidad a un integrante del equipo si afectar el ego y las motivaciones de los otros?

La programación es una habilidad que se puede aprender. Es como la matemática o como tocar la guitarra o como andar en bicicleta. Cuanto más se trabaja en ella, mejor nos volvemos. Podemos dominar las complejidades de un lenguaje, incluso de varios, entender los diferentes patrones de construcción de software, adquirir los conocimientos de algoritmos útiles. Practicando estas habilidades nos mantenemos fuerte. Siempre habrá casos límite, raros que nos presentan desafíos, pero fuera de eso la mayoría de las tareas de programación son rutinarias. Al igual que en matemática, en  programación, 1+1 = 2. El código que escribí es correcto o no.

El desarrollo de software es lo realmente difícil: Para entendernos primero voy aclarar cual es la diferencia, a mi entender, entre “Desarrollo de software” y “programación”. La programación es la solución de un problema bien definido en cambio el desarrollo de software incluye la definición del problema, en primer lugar. Una vez que tenemos las preguntas, por lo general es fácil encontrar las respuestas y resolver el problema: solo vasta contar con las herramientas y los conocimientos necesarios para utilizarlas. Si no sabes cuales son las preguntas, las cosas se vuelven mucho más difícil.

El desarrollo de software implica por un lado entender a los clientes, hablando en su lenguaje tratando de adivinar comprender necesidades, con entrevistas cuando saben lo que quieren y con comprensión a través de la observación cuando no. Por otro lado también se trata de trabajar con varias personas para construir un sistema de calidad coherente. No hace falta que cite Murphy, todo sabemos que en este trabajo si algo puede salir mal es eso lo que ocurrirá. Es mucho más fácil para un programador individual escoger un problema y resolverlo  que para un gran equipo definir y acotar el problema para luego dedicarse a encontrar una buena solución.

Quiero que me entiendan no estoy desmereciendo para nada a los sufridos programadores, considero que la mayoría ya evolucionó  como un pokémon , a desarrolladores de software ; lo único que pretendo es desmitificar a la programación que es vista como un acto  sobrenatural por lo que no conocen del tema (..fomentado esto por algunos nerds) .

Para ser mas explícito les doy el claro ejemplo del cubo Rubik (se darán cuenta de mi avanzada edad ;) ). Como se ve en el video existen personas que pueden resolverlo (ordenar todas las caras ) en menos de 10 segundos

Cuando uno ve esto parece casi un acto de magia. Este chico debe ser terriblemente inteligente para lograr semejante cosa!!!.

En realidad solo basta con googlear “solución rubik”  para darse cuenta que existen pasos bien definidos para resolver cualquier cubo de Rubik y en realidad si investigan un poco mas veran que se puede resolver cualquier cubo Rubik en 20 movimientos . Una vez que tenemos esto solo tenemos  con practicar y practicar hasta que podamos hacerlo en un tiempo lo suficientemente corto como para impresionar a los amigos y familiares que no tiene idea de esto.

Se entendió mi punto?!! espero que si. Ahora me gustaría saber que piensan de todo esto?

…. si me van a putear que sea con argumentos :D


Related Posts:

5 comentarios en Programar es fácil, lo realmente difícil es el Desarrollo de Software

  • [...] This post was mentioned on Twitter by Santiago Ferreira and Marilau, Luis Eiman. Luis Eiman said: Post: Programar es fácil, lo realmente difícil es el Desarrollo de Software http://t.co/lgdtQkB – dtunpoco.com.ar [...]

  • Hernán

    Estoy de acuerdo con lo que planteas, y en parte se debe a que la programación es una etapa y una herramienta más usada dentro del proceso de desarrollo de software. Programar no es difícil, interpretar las entradas (especificaciones) de manera correcta y producir programas en tiempo y forma de de alta calidad (válido, usable, mantenible) es lo difícil :P .
    De todas maneras, para mí, lo ideal es que aquel o aquellos que encabecen un proyecto de desarrollo de software sean como un “pokemón evolucionado” y no alguien que no conoce nada o no tenga una mínima experiencia de programación, para poder delimitar mejor los limites del sistema y sobre todo estimar de manera mas aproximada los tiempos necesarios para la implementación y así no vender tanto humo y que después ese humo se convierta en nubes inalcanzables.
    Saludos.

    • Hernán muchas gracias por participar!!. exactamente es preferible que un líder de proyecto venga del palo y haya vivido en carne propia los bemoles de la programación. Pero lo fundamental es: Facilidad para relacionarse con gente (muy buena comunicación oral y escrita), proactividad y don de mando y sobre toooodo mucho sentido común (el menos común de los sentidos)

      El líder de proyecto se tiene que conducir dentro de lo que podríamos llamar el dilema del Capitán Kirk y el Sr. Spock (personajes, casi sobra señalarlo, de la legendaria serie original de Viaje a las Estrellas).
      El ultra-preciso Señor Spock toma decisiones, o bien recomienda cursos de acción, en base a información cuantitativa confirmada y correctamente procesada.

      Pero el capitán de la nave Enterprise, James T. Kirk, debe tener la habilidad de poder tomar decisiones y asumir riesgos sobre la base de información cualitativa, muchas veces fragmentaria, y algunas veces hasta contradictoria, haciendo uso de su carisma y motivando a la tripulación
      Ninguno de estos dos enfoques siempre tiene la razón. Hay que moverse, pues, entre los enfoques del Señor Spock y las decisiones (preferiblemente educadas, capacitadas y experimentadas) del Capitán Kirk.


  • Guido Barosio

    Ah, mitos urbanos. Ahi van un par de ejemplos.

    Caso 1):
    Amigo que no veo hace mucho: “Asi que tu trabajo es programar, debes ser un genio”
    Guido: “Hmmm, pse, tomamos una birra?”

    Caso 2):
    Mama de Guido: “Guido la verdad nunca voy a entender que haces en tu trabajo”
    Guido: “Hmmm, pse, me preparas un Nesquik?”

    Caso 3):
    Minita en la calle: “Ay!!! Que divino, a mi hermano menor tambien le gusta la compu, juega al fifa todo el tiempo!!! Vos jugas?!?!?!?! ”
    Guido: ” (tu hermano menor mira porno nena, despertate!) Hmmm, nop, vamos a tomar una birra?”

    Caso 4):
    Pariente que no veo hace mucho en serio: “Me podrias venir a visitar y arreglar la compu eh”
    Guido: “Hmmmm, no, yo programo, no arreglo compus”

    Esta claro, el mito de que programar es ciencia de otro planeta es conveniente y fiel al objeto de que no nos rompan los quinotos cuando explicar que es lo que hacemos se transforma en un problema de complejidad similar a P = NP

    Una muy buena alternativa es dejar de programar y dedicarse a la cosecha de miel!

    Luis: No te invito mas.

    Abrazo,
    Guido

    • Luis Eiman

      Genial Guido!!.
      Leí tu comentario anoche y mi queridisma esposa me pregunto: de qué te reís tanto? , yo para evitar tantas explicaciones le mostré el post y tu comentario. Ella lo leyó pacientemente y una ves que termino comento “No pueden ser tan Nerds!!!” – Somos unos incomprendidos!!!!

      ya tengo la zunga en el bolso así que ni bien vuelva de las vacaciones los visito (llevo Cachaza de cachaça). el 14 me hizo prometer Cesar

      saludos!!

Deja una respuesta

 

 

 

Puedes usar estas etiquetas HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Últimos Comentarios

  • Cristian: Justamente esos progresos en las tecnologías y en la facilid...
  • Jago: Me encantan las paradojas. Esta no la conocía, pero es muy i...
  • el sapox: Después tenes que pasar el dato de quien bendice pendrives.....
  • Cristian: "Si queremos contar líneas de código, no deberíamos referirn...
  • Cristian: 1- Fase de optimismo general. Se está tan o...
  • German Zaragoza: A me viene al pelo justo que hoy rindo Diseño de Sistemas xD...
  • @matías_mi: Post viejo, pero ahora estoy de vacaciones y puedo escribir ...