8

Recomendaciones complementarias para antes o después de tomar este curso

Programar no es solo saber escribir y leer código para desarrollar con calidad cualquier trabajo es necesario conocer las herramientas y tecnologías que se usan.

El oficio de un piloto de F1 es manejar, pero seguro conoce la mecánica de su carro al derecho y al revés.

Nosotros escribimos código, pero necesitamos saber cómo funciona el servidor en el que este corre, al derecho y al revés.

Voy a listar las que yo considero que son las tecnologías y conceptos indispensables que debemos dominar aparte de saber como escribir código.

1. HTTP

Si no tienes claro cómo funciona el protocolo HTTP, arrancaste por el final.

Este debe ser el primer concepto que se aprende cuando se trabaja en desarrollo web.

El Curso de postman de platzi te ayudará con este tema.

2. Diseño de software

Saber acelerar, no es saber manejar.

Saber escribir código, no es saber programar.

Pablo durante todo el curso menciona que nuestro trabajo principal es diseñar no escribir código, para ser un buen diseñador de software yo te recomiendo este libro A Philosophy of Software Design

OJO - Las cosas no son blanco / negro

  • Este libro no es perfecto
  • Las opiniones del autor son eso, opiniones
  • Pero te va a dar una excelente perspectiva sobre cómo afrontar un desarrollo de ahora en adelante.

3. Seguridad

El mayor problema en la seguridad en línea es la falta de conocimiento de quien implementa. Hay dos retos principales: seguridad en la comunicación, seguridad en la aplicación.

El primero se resuelve con comunicaciones encriptadas (SSL).

Para el segundo es importante conocer los riesgos que existen. Algunas de las más comunes:

Platzi también nos puede ayudar con este tema, de hecho tiene toda una carrera

4. ReGex

Si no te gustan las expresiones regulares, garantizado que es porque no las sabe usar (bien).

Para variar Platzi tiene una solución para nuestros problemas con el Curso de Expresiones Regulares

Herramientas para ESCRIBIR código

Ahora si te voy a recomendar las herramientas que yo utilizo para escribir en python, las cuales me han ayudado a optimizar y hacer más eficiente la escritura del código y el mantenimiento de mi entorno de desarrollo en general.

Cabe destacar que yo trabajo sobre WSL2 en Windows 10 pro insiders, es decir, uso windows pero desarrollo sobre linux, si quieres un tutorial para preparar tu entorno de trabajo de esta manera dejalo en los comentarios.

Por como está haciendo las cosas windows últimamente me ha dado esperanzas en que no va a ser necesario comprarme una mac para tener un entorno de trabajo cómodo, compatible y eficiente.

Editor

VSCode de Microsoft.

  • Corre en Windows, Linux y mac OS.
  • Es gratuito.
  • Tiene plugins para todas las herramientas que voy a mencionar.

No instales ninguna de las siguientes herramientas como dependencia de un proyecto. Estas deben ser instaladas de forma global en tu equipo. Por qué? Porque el proyecto no depende de ninguna de estas. Son ayudas que vas a usar para escribir un mejor código, y las podemos cambiar sin afectar los proyectos.

pipx

Instala paquetes de Python de forma independiente manteniendo limpio tu Python global.

pyenv

Instala múltiples versiones de Python en tu sistema.

Poetry

Cada proyecto debe tener su propio ambiente virtual de Python. Poetry maneja los ambientes virtuales y las dependencias del proyecto.

Es práctico configurarlo para que los ambientes virtuales sean creados en la misma carpeta del proyecto, así desde cualquier editor puede buscar en el código de los paquetes instalados:

poetry config settings.virtualenvs.in-project true

Black

Evita darle vueltas a tema sobre que formato de escritura de código usar. Usa black y listo!

pipx install black

isort

Ordena los imports de forma lógica.

Instalalo con el siguiente comando:

pipx install isort

Configura isort para que sea compatible con Black.

# ~/.isort.cfg[settings]multi_line_output=3include_trailing_comma=Trueforce_grid_wrap=0use_parentheses=Trueline_length=88

Flake8

El código debe seguir los lineamientos de estilo y documentación recomendados por Python. Flake8 permite ejecutar pruebas de varios linters con un solo comando:

Usa los siguientes comandos para instalarlo:

pipx install flake8 
pipx inject flake8 flake8-bugbear flake8-docstrings flake8-fixme

y te recomiendo la siguiente configuración:

# ~/.config/flake8# Based on <https://github.com/psf/black/blob/master/.flake8>[flake8]ignore = E203, E501, W503
max-line-length = 80max-complexity = 18select = B,C,D,E,F,H,T,W,B9

Pylint

Para que el resultado de PyLint sea correcto, debe ejecutarse con la misma versión de python que se va a correr el proyecto. Para esto es útil usar pyenv.

Puedes instalar Pylint así:

pip install --userpylint
  • Para que funcione en ambientes virtuales es necesario instalar Pylint-venv.

      pip install --userpylint_venv
  • Para que funcione con Django instalar Pylint-Django.

      pip install --userpylint_django
  • Archivo de configuración:

    # ~/.pylintrc# Configuración para PyLint instalado por pip
      [MASTER]
      max-line-length=88load-plugins=pylint_django
      init-hook="
          from pylint_venv import inithook
          inithook()"disable=django-not-available,bad-continuation
    

Settings.json para VsCode

Esta es la configuración que uso en mi VsCode para integrar todas estas herramientas al editor:

// Python Config"python.venvPath": "${workspaceFolder}/",
"python.pythonPath": "/home/david/.pyenv/shims/python",
"python.linting.enabled": true,

"python.formatting.provider": "black",
"python.formatting.blackPath": "/home/david/.local/bin/black", 

"python.sortImports.args": ["--virtual-env", "${workspaceFolder}/.venv"],
"python.sortImports.path": "/home/david/.local/bin/isort", 

"python.linting.flake8Enabled": true,
"python.linting.flake8Path": "/home/david/.local/bin/flake8",
"python.linting.pydocstylePath": "/home/david/.local/bin/pydocstyle",
"python.linting.pydocstyleEnabled": true,  

"python.linting.pylintEnabled": true,
"python.linting.pylintPath": "/home/david/.pyenv/shims/pylint",

Debes tener instalada la extensión de Python

Deja en los comentarios que herramientas agregarías, cambiarías o quitarías de esta lista para desarrollar eficientemente en Python.

Escribe tu comentario
+ 2
2
17204Puntos

Muy completa tu info! Gracias.