Mostrando entradas con la etiqueta #programador. Mostrar todas las entradas
Mostrando entradas con la etiqueta #programador. Mostrar todas las entradas

martes, 11 de septiembre de 2018

Programación para todos, guía para principiantes y poco experimentados.


Por Ernesto Hernández. 

Esto es un artículo dedicado a todos aquellos que quieren iniciar en el mundo de la programación y para los que aún tienen ciertas dificultades al momento de programar.

CUALIDADES Y ACTITUDES

Primero tengo que hablarte de las cualidades y actitudes que deberías tener o desarrollar para dedicarte al mundo de la programación:

    1)     Disciplina: Es muy importante que tengas el hábito de estudiar, investigar y hacer proyectos en horarios/días establecidos previamente. Recuerda que la programación es de mucha práctica y sólo así podrás convertirte en un buen desarrollador.

       2)     Perseverancia: En el día a día te enfrentarás a todo tipo de problemas y algunas veces tendrás que investigar o buscar la manera para resolverlo. Esto podrá tomarte horas, días o meses, debes ser perseverante y pensar que todo puede tener una solución. No te desesperes, ten paciencia.

     3)  Crear: Como te decía en el punto uno, la única manera de entender la programación es practicando. Te será de gran ayuda crear mini proyectos y fijarte pequeños objetivos para ir entendiendo conceptos y la manera en la que funciona la programación.

     4)     Jugar: Este es un término que siempre he utilizado cuando desconozco una herramienta y necesito entenderla. Para ello me pongo a utilizarla con el único objetivo de entender su funcionamiento. Siempre es necesario explorar la herramienta para saber qué tanto nos ofrece y cómo ayuda a resolver un problema, ya que al explorarla y entenderla podrás dar una mejor solución.

INICIANDO EN EL MUNDO DE LA PROGRAMACIÓN
Si eres completamente nuevo en la programación te recomiendo que empiezas en el mundo web ya que verás resultados más rápidos al momento que estés practicando y te mantendrás motivado.

Si quieres empezar hoy mismo en la programación te recomiendo las siguientes tecnologías para que comiences a practicar:

            NIVEL BASICO
       HTML: Este no es un lenguaje de programación, pero te ayudará a crear tu primera página web y es necesario que aprendas lo básico ya que todas las páginas web que visitas están basadas en este formato.

       CSS: Si quieres que tu primera página web tenga un diseño bonito, este te ayudará a cambiar el color de las letras, el color de fondo y a darle efectos a las imágenes. 

NIVEL INTERMEDIO
       JavaScript: Hoy en día, es unos de los lenguajes de programación más populares y te ayudará a que tu página sea más dinámica, más amigable y a realizar operaciones matemáticas.

     En este punto puedes comenzar a explorar herramientas (librerías o plugins) creadas por terceros, como: Bootstrap, JQuery, FontAwesome, etc.

NIVEL AVANZADO
Si necesitas guardar información de tus clientes entonces necesitarás un lenguaje de servidor, como: PHP, JavaScript, Java, C#, etc… Además de un motor de base de datos, como: MySQL o SQL Server.

COSAS QUE NO DEBERÍAN PREOCUPARTE EN LOS PRIMEROS AÑOS DE PROGRAMACIÓN

Algoritmos: No es necesario conocerlos ya que la mayoría de las herramientas que usarás ya los traen implícitamente.

Aplicaciones de escritorio: En la actualidad la mayoría de los proyectos son basados en web y solo ciertos proyectos necesitarán una aplicación de escritorio.

Conocer todas las tecnologías o herramientas: Hasta ahorita no he conocido a nadie que domine ni la mitad de ellas, ya que es un mundo muy cambiante y que avanza muy rápido. Es mejor que te enfoques en pocas tecnologías, en las que te agraden más y profundices en los conceptos básicos, ya que al dominarlos no te será difícil aprender otras tecnologías cuando sea necesario.

Pensar que lo que haces o tus soluciones están mal: Probablemente sí, pero en un principio no tienes que preocuparte ya que con el paso del tiempo te irás dando cuenta como se hacen las cosas de la manera correcta.

POSIBLEMENTE LA PROGRAMACIÓN NO ES LO TUYO
Por último, me gustaría mencionar que si eres de las personas que no pueden permanecer más de 6 horas sentadas frente a una computadora entonces probablemente la programación no sea lo más adecuado para ti, ya que habrá días que tendrás que estar 14 horas o más frente a la computadora.

Si no eres autodidacta, tienes poca imaginación y creatividad tendrás muchas dificultades al resolver problemas.  Recuerda que una habilidad que se ha hecho sumamente popular en el mercado laboral es que tengas la capacidad de aprender rápido y en ocasiones hacerlo solo.

Espero este pequeño artículo basado en mi experiencia personal te sirva como una especie de guía para que inicies en el mundo de la programación.

Si ya tienes experiencia programando y te interesa crear un código limpio y elegante, da clic aquí

martes, 13 de febrero de 2018

Código Elegante

Por Iván Vázquez. 

Conozco personas que dirán que las matemáticas son la base de la programación o requisito fundamental para ser un buen programador. Otros dirán que no es imprescindible, aun así, nadie podría negar la estrecha relación que existe entre las ecuaciones matemáticas y los algoritmos lógicos.

La manera de abordar y abstraer una solución a un problema puede ser diversa y aún así llegar a un resultado correcto. Sin embargo, puede existir un algoritmo mejor que otro, si se compara algunos de los siguientes puntos: estabilidad, ejecución, mantenimiento, funcionalidad, legibilidad, compatibilidad entre otros muchos más. Está claro que para algunos casos tendrá más importancia cierto factor sobre otro.

Por ejemplo, en algunos dispositivos con recursos limitados podría tener más importancia la velocidad de ejecución sobre la compatibilidad del programa. O por el contrario, el desarrollo multi plataforma que brinda gran compatibilidad, pero podría aumentar la complejidad del código y requerir dependencias.

En cualquiera que sea el caso se pueden aplicar algunas reglas para mejorar la lógica, crear código limpio y tener buenas prácticas de programación. Por eso me gustaría compartir algunos consejos que me han ayudado y que podrían ser útiles.

1-. No copiar y pegar código.
Esto ayuda a razonar y comprender nuestro programa, también evita que dupliquemos código o que se tome código innecesario.

2-. No escribir comentarios.
Podría parecer raro pero el exceso de comentarios en el código es indicador de que el código no es muy fácil de entender. Se puede evitar escribir comentarios representando las entidades, propiedades, métodos y variables con nombres intuitivos.

Por ejemplo:
No es necesario comentar los siguientes métodos, debido a su fácil lectura.

//Código fácil de leer
User::getBy($id);
User::is($root);

3-. No indentar más de 4 llaves.
Generalmente los tabuladores surgen a partir de disyunciones en el flujo del proceso, para los humanos es más fácil seguir un flujo lineal que uno intercalado.

Ejemplo:

//Código complejo y difícil de leer
if ($condicion === true){
  if ($segunda_condicion === true){
    $result = 'A';
  }
  elseif ($segunda_condicion === false){
    $result = 'B';
  }
}else{
  $result = 'C';
}
return $resul;

//Mismo resultado con código fácil de leer
if(!$condicion){
    return 'C';
}
return $segunda_condicion ? 'A' : 'C';

Ambos segmentos de código llegan al mismo resultado, pero uno resulta más complejo que otro debido a las llaves. La intención es escribir un código "bonito", que sea más fácil de leer por humanos y de procesar por ordenadores.

4-. Evitar el Switch
En algunos casos es más difícil reemplazar un switch por un arreglo, pero siempre es más eficiente un arreglo o diccionario que la estructura de control switch ya que internamente funciona como un conjunto de ifs.

Mostraré un caso común;

//Código complejo y difícil de leer
 switch(status)
 {
  case 'new':
    $('.item').addClass('blue');
  brack;
  case 'updated':
    $('.item').addClass('green');
  brack;
  case 'canceled':
    $('.item').addClass('yellow');
  brack;
  case 'deleted':
    $('.item').addClass('red');
  brack;
 }

 // Mismo resultado con código optimizado.
 var colors={"new":"blue","updated":"green","canceled":"yellow","deleted": "red"};
 $('.item').addClass(color.status);
En ambos casos se cumple el objetivo, pero es más eficiente usando un arreglo.

5-. Evitar en php comillas dobles ""
En php las comillas dobles hacen referencia a un string que podría contener variables, esto obliga al intérprete de php a buscar intensivamente variables contenidas en su interior. Mientras que con comillas simples es reconocido como un simple string.

  $world = 'mundo';
  echo "Hola $mundo";
  echo "Hola".$mundo;
  echo 'Hola '.$mundo; // <-- Mejor resultado en tiempo de ejecución.

6-. Evitar el uso de excesivo de loops.
El hecho de intentar resolver algo común sin un ciclo, ayuda a pensar una solución mejor. Debemos evitar al máximo el uso de loops mágicos como FOR IN o EACH que son más lentos.

7-. Utilizar índices en las bases de datos.
En los gestores de bases de datos no existe un límite de registros establecido, el límite es el espacio disponible en el disco duro. De igual forma, la velocidad de lectura y escritura de registros termina siendo controlado por el sistema operativo y los mismos componentes electrónicos, el uso correcto de índices en las tablas permite trabajar con 200 o 300 millones de registros sin problemas. Típicamente se colocan los índices en los campos relacionados con otras tablas o en campos que se utilizan para filtrar.

8-. No hacer consultas con subqueries.
Al contrario que los índices, los subqueries son internamente un loop interno que afecta el performance gravemente. Esto se debe a que ejecuta un query por cada row consultado en el select principal, si se agregan 2 o 3 podría ser muy lento, incluso desbordar la memoria en tablas de pocos rows. Se debe resolver con joins, o ejecutar consultas separadas.

9-. Nivel ensamblador
Es conveniente tomar en cuenta factores de bajo nivel, el programa en lenguajes de alto nivel como Java o PHP termina traduciéndose a ensamblador y, por último, en lenguaje binario en nuestro procesador o memoria ram. Por ejemplo, una variable global requerirá memoria, mientras algún objeto haga referencia a ella. Esto debido al contexto y alcance (scope) de las funciones y objetos. 

En resumen…
Abstraer el problema y razonarlo de la manera más inteligente posible te permite crear código legible, óptimo y elegante.


Te recomendamos