Revista Informática

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

Publicado el 26 enero 2011 por Leiman

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


Volver a la Portada de Logo Paperblog