[UNDERtip] Cómo dominar el desarrollo

Iniciado por grep, Julio 29, 2016, 07:31:34 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 29, 2016, 07:31:34 PM Ultima modificación: Julio 29, 2016, 07:43:43 PM por grep
Cómo dominar el desarrollo


Es probable que los siguientes enunciados te parezcan obvios pero créeme, aún cuando ya sabemos programar en otros lenguajes, no nos damos cuenta de lo que tenemos que hacer.


Comprende la estructura de archivos de los proyectos

En diferentes ocasiones puede darse el caso de que no sabemos cómo empezar a analizar o a programar un proyecto de software desarrollado en el lenguaje que estamos aprendiendo o ya conocemos. Al ver muchos archivos, posiblemente de diferentes formatos, y directorios inmediatamente nos viene a la cabeza la idea de que dicho proyecto es muy complejo o de que no estamos lo suficientemente capacitados como para adentrarnos en el mismo.

Hoy en día es normal que existan proyectos con muchos archivos y directorios. Incluso los IDEs de desarrollo crean toda una estructura de archivos para tu primer 'hola mundo'. Muchos archivos de configuración, scripts, templates, dependencias, referencias, patrones, frameworks, uso de build systems, continuous integration, versionado. Esto es porque las comunidades de desarrollo siempre buscan una mayor facilidad y una mejor comodidad. Realmente lleva el costo de una curva de aprendizaje muy larga para el principiante, pero créeme, una vez que entiendes estos conceptos el mundo del desarrollo se vuelve sencillo.


La estructura de los proyectos complejos como aquellos basados en las autotools pueden ser muy difíciles de seguir. Pero una vez que entiendes los motivos detrás de ellos resulta sencillo encontrar lo que buscas.

Si eres un principiante entonces a empieza curiosear tus propios proyectos. Es muy probable que tengas un IDE o un framework de herramientas que te ayude en el desarrollo como Netbeans para Java, Visual Studio para .NET, el framework Ruby On Rails para Ruby, etc. Cuando creas un proyecto desde cero ya tienes toda una estructura de archivos pero vamos que es lo más básico que puedes tener. Analiza cada uno de estos archivos, busca y encuentra su significado y utilidad, averigua si son necesarios y porque están allí.


La organización utilizada para programar aplicaciones nativas de Android es útil tanto para el desarrollador como para el build system.

Quizás sólo creas scripts o archivos compilables. Intenta ir más lejos, aprende como modularizar tu código en diferentes archivos, librerías o paquetes. Aprende a utilizar un build system.

Si eres conocedor, entonces debes empezar por el entry point. Observa el ante-último consejo.


Conviértete en un compilador humano

Esto suena vago, pero a la vez muy abarcativo. No te pido que sepas como crear instrucciones en código máquina (física o virtual) a partir de un código fuente. Tampoco sugiero que conozcas a la perfección cada estructura o librería que te brinda tu lenguaje.

Lee código. Si no entiendes una estructura entonces no terminas de entender el lenguaje. Si no entiendes los conceptos, vocablo y palabras clave que suele utilizar la comunidad, no terminas de entender el lenguaje.

Si eres un principiante entonces utiliza un debugger para ver paso a paso lo que hace tu compilador o intérprete y así comprender mejor. Esto puede parecer complejo en un principio, pero créeme, el debugger puede enseñarte muchas cosas. Pero no abuses de esta herramienta (puedes volverte un adicto), sólo debes utilizarlo una vez que te hayas golpeado mil veces la cabeza contra la pantalla.


El debugger de Visual Studio es una herramienta interactiva que, además, puede realizar acciones bajo demanda (lazy loading).

Lee los manuales y referencias oficiales. Documentaciones como manpages, info files, MSDN Library, perldocs, The Python Standard Library, etc, no existen solamente para ocupar un espacio en internet.


Utiliza los conceptos y términos propios del lenguaje y de las herramientas

Siempre trato de resaltar lo importante que es esto. Suelo encontrarme con personas, ya sean principiantes o programadores sin organización, con las cuales es difícil entablar una conversación ya que no saben utilizar correctamente palabras propias del lenguaje o del entorno de programación. Existen veces que utilizamos incorrectamente los conceptos, o que ni siquiera los utilizamos, y alargamos diálogos sin sentido.


Cuando te encuentras en entornos como el que brinda el framework Angular debes tener muy en claro los conceptos que se utilizan.

Nunca dejamos de aprender, pero aprendemos muy bien a ignorar. El mundo de las computadoras y de la programación se basa en conceptos bien definidos. Cuando leas documentación, toma las palabras claves y aprende el significado y no supongas nada ya que un lenguaje y su entorno pueden guardar funcionalidades y características que no conoces.


Empieza el análisis por el entry point del codebase

Todo sistema tiene un entry point y por lo tanto todo proyecto de software tiene su entry point. Tanto para el analista de proyectos de terceros como para el principiante aprendiz de un lenguaje es muy útil saber cuál es ese punto de entrada en el que su programa es un ente en ejecución.

Entry Point, lifecycle y Codebase son conceptos muy utilizados en internet. Cuando quieras saber acerca del entry point, estructura del codebase de un lenguaje o tipo de proyecto, o lifecycle de una aplicación que comúnmente cumple el rol de servidor, entonces utiliza esas palabras en el buscador o en foros, por ejemplo stackoverflow.

Es sabido que el entry point de lenguajes como Java, C# o C/C++ es una función con ciertas características. Pero en lenguajes de scripting y proyectos implementados con un framework, no es tan fácil saber por dónde comienza la ejecución. En ocasiones, las prácticas comunes y recomendaciones de la comunidad, especifican una cierta organización y codificación para poder identificar el entry point. Por ejemplo, Python por defecto puede ejecutar el código de cualquier archivo con código fuente, sin embargo los desarrolladores suelen limitar esto a través de cláusulas en el código (por ejemplo, if __name__ == "__main__":) y con nombres de archivo identificables como (por ejemplo, __main__.py).


Tener conocimiento del entry point y de los diferentes módulos utilizados por una aplicación es esencial para poder analizar e innovar. El HTTP Message lifecycle de un proyecto No tienes permitido ver los links. Registrarse o Entrar a mi cuenta WEB API nos brinda pautas para poder hacer un seguimiento de la funcionalidad del web service.


Sigue las convenciones utilizadas

Cuando veas código, ya sea cuando estas siguiendo alguna documentación o analizando proyectos de terceros, presta atención a las formas de codificación, a la organización y a los patrones utilizados.

Todo lenguaje, en cuanto a la codificación y organización, tiene sus lineamientos estándar de codificación, sus buenas prácticas, sus prácticas comunes y sus patrones comunes de desarrollo. Los proyectos suelen utilizar algunas de estas prácticas y patrones, pero además crean sus propias convenciones.


La comunidad de desarrolladores C# suele seguir los lineamientos y convenciones utilizados por ReSharper y los diferentes MSDN guidelines and conventions.

También existen convenciones para la organización de los archivos de un proyecto. Analiza y averigua la razón de tal organización.



Visita #UNDERtips en el blog

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta,

Me ha gustado tu aporte, pedagógico, sencillo pero re importante.

Mucha gente no sabe nada del asunto hasta que le toca hacerlo en la vida real.