notifications Notificaciones

Marcar todas como leídas

Ver más

2400 veces ha sido leído este artículo

Lo importante es que funcione

Lo lees en 4 Min.

Este artículo va dirigido principalmente a personas que están comenzando en el mundo de la programación (estudiantes espcialmente).

Cuando me encontraba estudiando la universidad una frase muy común con la que me topaba era: lo importante es que funcione, lo comentaban tanto estudiantes de nuevo ingreso, como de grados superiores. Era una opinión que yo no compartía

Conforme iba avanzando de grados comprendí el por qué de la frase. Las personas encargadas de evaluar tu programa (comúnmente, los profesores), se basan en una serie de puntos, que el alumno debe cumplir para obtener una calificación aprobatoria, desafortunadamente, en esos puntos, comúnmente se olvida la evaluación del código.

Recuerdo un debate con un compañero, era un problema "muy sencillo".

def sum(v1, v2):
 res = v1 + v2
 return res

El argumento era acerca de que que podíamos reducir las líneas de código de esta función hasta llegar a ser una, sin dejar de usar nombres declarativos para nuestras funciones y variables.

Mis propuestas era que la función se quedara de una de las siguientes dos formas (aprovechando las cualidades de Python, que era el lenguaje que estábamos usando):

def suma(valor1=0, valor2=0):
 return valor1 + valor2

suma = lambda valor1=0, valor2=0 : valor1 + valor2

Es importante que cuando aprendamos un nuevo lenguaje de programación, además de la sintaxis, también aprendamos los tipos de nomenclaturas que podemos usar.

El debate concluyó con la frase lo importante es que funcione.

En primera instancia podemos decir, está bien, sólo nos estamos ahorrando una varaible, ¿y los nombres?, bueno, si usas un poco tu imaginación comprenderás qué está haciendo el código, a pesar de los nombres v1 y v2 poco descriptivos. Sin embargo, si esta ideología la acarreamos a un programa más grande (por ejemplo un punto de venta) les puedo asegurar que tendremos un programa con un rendimiento muy malo y que con el paso del tiempo, se irá haciendo más difícil darle mantenimiento al código de este sistema

Es inevitable que cuando comenzamos a programar cometeremos estos tipos de "errores", vaya, estamos comenzando. A algunas personas nos cuesta más que a otras, sin embargo, si algo nos apasiona y queremos ser buenos en ello (lo que sea) no nos queda de otra que practicar, dedicarle tiempo y ser constantes. Con esta constancia y dedicación, nuestras habilidades mejorarán sí o sí.

¿Quieres saber si mejoraste como programador? solo ve a tu cuenta de Github o abre un programa de hace 6 meses y mira el código que escribiste, el "¿qué estaba pensando para escribir esto?" Se te saldrá por sí solo.

En el tiempo que llevo como programador he notado que existen dos formas en las cuales un programador puede mejorar sus habilidades (escribiendo código).

  • Trabajando en proyectos personales.
  • Trabajando con un equipo de desarrollo.

Mejora tus habilidades

Sin duda alguna, en nuestro paso por la escuela recabaremos muchísima información que nos será de mucha ayuda para cuando nos encontremos trabajando en alguna empresa o startup, sin embargo, en muchos casos, esos conocimientos no bastarán para que podamos realizar tareas complejas, de alto impacto para el cliente o para la empresa donde trabajamos.

Poco a poco nos daremos cuenta que esto:

protected Boolean conectadoRedMovil(){
  ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity != null) {
      NetworkInfo info = connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
      if (info != null) {
        if (info.isConnected()) {
          return true;
        }else{
          return false
        }
      }else{
        return false
      }
    }else{
      return false;
    }  
  }

Puede ser reducido a esto (inclusive a menos):

protected Boolean IsConnectedMobileNetwork(){
 ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
 if (connectivity == null)
   return false

 NetworkInfo info = connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
 return info != null && info.isConnected()
}

Nuevamente, con el paso del tiempo iremos mejorando, pero, ¿hay manera en que podamos acelerar el proceso de mejora? La respuesta es sí.

Cuando estemos comenzando a programar nos enfoquemos en que nuestro programa no solo funcione, si no funcione bien, nos olvidemos de la frase lo importante es que funcione.

Programar es un arte y para que podamos desarrollar un producto bien hecho necesitaremos de la ayuda de más personas (programadores o no).

Creo firmemente que en la escuela aprenderemos cosas importantísimas, pero creo que aprenderemos más cosas realizando proyectos propios e/o incorporandonos a equipos de trabajo (incluso si es con tus mismos compañeros de escuela).

Verán, cuando tenemos un producto el cual es usado por decenas, cientos o miles de usuarios sin duda tendremos la necesidad de agregar ciertas funcionalidades para retener a los usuarios que ya adquirimos, sin dejar de atraer a nuevos, esto implicará mucha investigación, tomar cursos, leer libros, leer blogs, ver vídeos, tutoriales etc ... mismos que, sin duda, nos harán mejores programadores.

De igual forma es arreglando los Bugs que nuestro proyecto tenga, sí, es una realidad que todos nuestros proyectos van a tener bugs, es inevitable, los programas son desarrollados por personas que distan mucho de ser perfectos.

Nos nos enfoquemos en crear programas perfectos, el objetivo es que tengan la menor cantidad de errores que nos sea posible.

El trabajo en equipo es otra forma en que podemos mejorar, nosotros no lo sabemos todo, es una realidad. Trabajando en equipo podemos aprender de los demás, desde cómo miden su tiempo, cómo organizan sus labores, cómo programan, cómo investigan etc... Esto funciona más cuando nos incorporamos a un equipo donde nosotros somos los que tenemos menos conocimientos (vaya somos los "tontos").

Al principio puede ser abrumador, ver como tus compañeros dominan las tecnologías, como hablan de términos que para nosotros son desconocidos o simplemente como realizan sus tareas en poco tiempo, lo que a nosotros nos llevaría un par de horas, ellos lo tienen listo en un par de minutos, con un mejor código y menos errores, sé que es abrumador, porque me ha pasado.

Pero no te preocupes, en la mayoría de los equipos siempre habrá quienes estén dispuestos a ayudarte a mejorar, ya sea explicando ciertas cosas, haciéndote ver en que fallaste y diciéndote cómo mejorar tu código. Si no es así, esfuérzate el doble, para que el día de mañana puedas apoyar a alguna persona nueva y la curva de aprendizaje sea menor para él/ella.

Por dónde comenzar

Me gustaría colocar ciertas áreas donde podemos mejorar desdeahora, sin embargo, es casi imposible hacerlo en un solo artículo, debido a que existen diferentes "ramas" en las cuales nos podemos especializar (Móviles, Web, Servidores, Escritorio, etc)

Sin embargo, algo que sí puedo decir mejorará tu código, sin importar tu especialización o tu nivel de experiencia, es en que debes aprender a escribir pruebas unitarias.

Conclusión

Mi conclusión es bastante sencillas, no nos conformemos con tener proyectos que unicamente funcionen, sino que funcionene correctamente. Es cierto es más barato comprar más memoria RAM que invertir tiempo desarrollador para arreglar un programa lleno de bugs y con un performance lamentable, sin embargo eso no dará resultados a largo plazo.

Si podemos mejorar desde ya, lo hagamos, no lo pospongamos para el siguiente lunes (como las dietas).

Recomendaciones

Emojis en tu aplicación. Deja de utilizar utf8 con MySQL.

Lo lees en 4 Min.

¿Alguna vez has pensado en almacenar emojis en tu Base de datos?, Si, emojis, de tal forma que tu...

 

Python Annotations

Lo lees en 1 Min.

Este es un artículo tiene como objetivo describir los #223467 Annotations de Python 3 ?????????...

 

Elixir el lenguaje de programación

Lo lees en 7 Min.

Elixir el nuevo lenguaje de programación. Quizás hayas oído hablar acerca de Elixir sin que te q...

 

Pipes en Linux

Lo lees en 4 Min.

Pipes en linux Si eres usuario Linux/Unix es probablemente hayas oído hablar acerca de los pipes...

 

favorite 1

Inicia sesión o Regístrate para poder agregar tu respuesta.